davinci_pdex_test_kit 0.10.6 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/config/presets/pdex_payer_client_postman_preset.json +12 -0
  3. data/config/presets/pdex_payer_server_fhir_foundry_ri_preset.json +96 -0
  4. data/config/presets/pdex_payer_server_inferno_ri_preset.json +96 -0
  5. data/lib/davinci_pdex_test_kit/docs/davinci_pdex_test_kit_description_v200.md +33 -0
  6. data/lib/davinci_pdex_test_kit/docs/payer_client_suite_description_v200.md +107 -17
  7. data/lib/davinci_pdex_test_kit/fhir_resource_navigation.rb +5 -1
  8. data/lib/davinci_pdex_test_kit/group_metadata.rb +5 -1
  9. data/lib/davinci_pdex_test_kit/igs/davinci-pdex-2.0.0.tgz +0 -0
  10. data/lib/davinci_pdex_test_kit/igs/us-core-3.1.1.tgz +0 -0
  11. data/lib/davinci_pdex_test_kit/metadata.rb +16 -0
  12. data/lib/davinci_pdex_test_kit/must_support_test.rb +3 -0
  13. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_member_match_tests/client_member_match_validation_test.rb +20 -18
  14. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_validation_test.rb +96 -43
  15. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_workflow_interaction_test.rb +49 -0
  16. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/allergyintolerance_clinical_data_request_test.rb +18 -16
  17. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/careplan_clinical_data_request_test.rb +18 -16
  18. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/careteam_clinical_data_request_test.rb +18 -16
  19. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/clinical_data_request_check_test.rb +24 -0
  20. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/condition_clinical_data_request_test.rb +18 -16
  21. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/device_clinical_data_request_test.rb +19 -17
  22. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/diagnosticreport_clinical_data_request_test.rb +18 -16
  23. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/documentreference_clinical_data_request_test.rb +18 -16
  24. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/encounter_clinical_data_request_test.rb +18 -16
  25. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/explanationofbenefit_clinical_data_request_test.rb +18 -16
  26. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/goal_clinical_data_request_test.rb +18 -16
  27. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/immunization_clinical_data_request_test.rb +18 -16
  28. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/location_clinical_data_request_test.rb +18 -16
  29. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/medicationdispense_clinical_data_request_test.rb +18 -16
  30. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/medicationrequest_clinical_data_request_test.rb +18 -16
  31. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/observation_clinical_data_request_test.rb +18 -16
  32. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/organization_clinical_data_request_test.rb +18 -16
  33. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/patient_clinical_data_request_test.rb +18 -16
  34. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/patient_id_search_request_check_test.rb +21 -0
  35. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/practitioner_clinical_data_request_test.rb +18 -16
  36. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/practitionerrole_clinical_data_request_test.rb +18 -16
  37. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/procedure_clinical_data_request_test.rb +18 -16
  38. data/lib/davinci_pdex_test_kit/pdex_payer_client/collection.rb +46 -44
  39. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/binary_endpoint.rb +26 -0
  40. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/export_endpoint.rb +29 -0
  41. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/export_status_endpoint.rb +38 -0
  42. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/member_match_endpoint.rb +51 -0
  43. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/next_page_endpoint.rb +23 -0
  44. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/patient_endpoint.rb +25 -0
  45. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/patient_everything_endpoint.rb +34 -0
  46. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/proxy_endpoint.rb +178 -0
  47. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/resource_read_endpoint.rb +21 -0
  48. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/resource_search_endpoint.rb +22 -0
  49. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/token_endpoint.rb +27 -0
  50. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server.rb +53 -0
  51. data/lib/davinci_pdex_test_kit/pdex_payer_client/tags.rb +15 -0
  52. data/lib/davinci_pdex_test_kit/pdex_payer_client/urls.rb +51 -0
  53. data/lib/davinci_pdex_test_kit/pdex_payer_client_suite.rb +101 -144
  54. data/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_minimal_data_validation.rb +1 -1
  55. data/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_must_support_validation.rb +1 -1
  56. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_id_search_test.rb +5 -4
  57. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_identifier_search_test.rb +5 -4
  58. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_must_support_test.rb +3 -2
  59. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_last_updated_search_test.rb +7 -6
  60. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_service_date_search_test.rb +7 -6
  61. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_type_search_test.rb +7 -6
  62. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_use_search_test.rb +6 -5
  63. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_provenance_revinclude_search_test.rb +10 -7
  64. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_read_test.rb +1 -1
  65. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_reference_resolution_test.rb +3 -2
  66. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_validation_test.rb +1 -1
  67. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/metadata.yml +12 -12
  68. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit_group.rb +12 -14
  69. data/lib/davinci_pdex_test_kit/pdex_payer_server/export_patient_group.rb +3 -4
  70. data/lib/davinci_pdex_test_kit/pdex_payer_server/export_validation_group.rb +2 -6
  71. data/lib/davinci_pdex_test_kit/pdex_payer_server/member_match_request_local_references_validation.rb +1 -1
  72. data/lib/davinci_pdex_test_kit/pdex_payer_server/member_match_request_profile_validation.rb +1 -3
  73. data/lib/davinci_pdex_test_kit/pdex_payer_server/multiple_member_matches_group.rb +7 -8
  74. data/lib/davinci_pdex_test_kit/pdex_payer_server/no_member_matches_group.rb +7 -8
  75. data/lib/davinci_pdex_test_kit/pdex_payer_server/patient_operation_in_capability_statement_validation.rb +1 -3
  76. data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_clinical_data_group.rb +3 -5
  77. data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_everything_group.rb +2 -4
  78. data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_export_group.rb +2 -4
  79. data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_member_match_group.rb +12 -13
  80. data/lib/davinci_pdex_test_kit/pdex_payer_server_suite.rb +13 -14
  81. data/lib/davinci_pdex_test_kit/version.rb +2 -3
  82. data/lib/davinci_pdex_test_kit.rb +1 -2
  83. metadata +65 -24
  84. data/lib/davinci_pdex_test_kit/ext/inferno_core/record_response_route.rb +0 -98
  85. data/lib/davinci_pdex_test_kit/ext/inferno_core/request.rb +0 -19
  86. data/lib/davinci_pdex_test_kit/ext/inferno_core/runnable.rb +0 -18
  87. data/lib/davinci_pdex_test_kit/mock_server.rb +0 -281
  88. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_member_match_tests/client_member_match_submit_test.rb +0 -24
  89. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/client_member_match_must_support_submit_test.rb +0 -26
  90. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/client_member_match_must_support_validation_test.rb +0 -32
  91. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/metadata.yml +0 -61
  92. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/initial_scratch_storing.rb +0 -32
  93. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/initial_wait_test.rb +0 -31
  94. data/lib/davinci_pdex_test_kit/tags.rb +0 -11
  95. data/lib/davinci_pdex_test_kit/urls.rb +0 -77
  96. /data/lib/davinci_pdex_test_kit/{metadata → pdex_payer_client/mock_server/resources}/mock_capability_statement.json +0 -0
  97. /data/lib/davinci_pdex_test_kit/{metadata → pdex_payer_client/mock_server/resources}/mock_operation_outcome_resource.json +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5546eb5958a76b5d042e166f78aa1f5c2153bb90875950a86f8bc3f3d62ad173
4
- data.tar.gz: bd56afdf4ff164a8b36f21dee066d3338d6b68b83e111e66a88671b13f8e592c
3
+ metadata.gz: 318708e3bf373fe0429d145f0bec49fe07739eea1a296dff8b6aedef2769b361
4
+ data.tar.gz: d2ab19dc58bc8734324f60b6eda28350df3e999c94e15218ba614df630fc02e2
5
5
  SHA512:
6
- metadata.gz: 61f50cd8c1f3c4efacc2b4dfcbfba99609d75578ca1522870049217ef26cb4df03b68da31826527d102e365f5bc0746ea6b988b05acb3a88240ae55f1962f71a
7
- data.tar.gz: a118e923622ad1bcc570f0a37a4e52c6c67e0bff199da35d4424ada4269ad73fd8cf541be60eb0aff5f5422bea15f5316d084e5463115544d8440c4f966b1851
6
+ metadata.gz: 57c7352a6207c74197bf2511a7e1305fca155c2d0135456aa725cc209f89cedb5ef8733daffa2f546042a12b6c2f91f94bb1fe9f58c4f3aa6a3253c051d58896
7
+ data.tar.gz: 7cbb1b8afee0ddc8e04fe6e19853b0a13f82981feff200d3197b92597fd248104c49cb3570a3ce0e0b4a183350a8c78a8d0c3a7feca16cf42ab8f201edbe08e6
@@ -0,0 +1,12 @@
1
+ {
2
+ "title": "PDex Payer Client Postman Demo",
3
+ "id": "pdex_payer_client_postman_demo_preset",
4
+ "test_suite_id": "pdex_payer_client",
5
+ "inputs": [
6
+ {
7
+ "name": "access_token",
8
+ "type": "text",
9
+ "value": "UERleFBheWVyQ2xpZW50VGVzdFBvc3RtYW5EZW1v"
10
+ }
11
+ ]
12
+ }
@@ -0,0 +1,96 @@
1
+ {
2
+ "title": "PDex Payer Server Preset for FHIR Foundry RI",
3
+ "id": "pdex_payer_server_fhir_foundry_ri_preset",
4
+ "test_suite_id": "pdex_payer_server",
5
+ "inputs": [
6
+ {
7
+ "name": "url",
8
+ "value": "https://pdex-server.davinci.hl7.org/fhir",
9
+ "_title": "FHIR Server Base Url",
10
+ "_type": "text"
11
+ },
12
+ {
13
+ "name": "credentials",
14
+ "value": null,
15
+ "_title": "OAuth Credentials",
16
+ "_type": "oauth_credentials",
17
+ "_optional": true
18
+ },
19
+ {
20
+ "name": "member_match_request",
21
+ "value": "{\n \"resourceType\": \"Parameters\",\n \"id\": \"member-match-in\",\n \"parameter\": [\n {\n \"name\": \"MemberPatient\",\n \"resource\": {\n \"resourceType\" : \"Patient\",\n \"id\" : \"1\",\n \"meta\" : {\n \"lastUpdated\" : \"2019-07-07T13:26:22.0314215+00:00\",\n \"profile\" : [\"http:\/\/hl7.org\/fhir\/us\/core\/StructureDefinition\/us-core-patient\"]\n },\n \"language\" : \"en-US\",\n \"text\" : {\n \"status\" : \"generated\",\n \"div\" : \"<div xmlns=\\\"http:\/\/www.w3.org\/1999\/xhtml\\\" xml:lang=\\\"en-US\\\" lang=\\\"en-US\\\"><p style=\\\"border: 1px #661aff solid; background-color: #e6e6ff; padding: 10px;\\\"><b>Johnny Appleseed <\/b> male, DoB: 1986-01-01 ( Member Number:\\u00a0https:\/\/www.xxxhealthplan.com\/fhir\/memberidentifier#1234-234-1243-12345678901)<\/p><hr\/><table class=\\\"grid\\\"><tr><td style=\\\"background-color: #f3f5da\\\" title=\\\"Record is active\\\">Active:<\/td><td>true<\/td><td style=\\\"background-color: #f3f5da\\\" title=\\\"Known Marital status of Patient\\\">Marital Status:<\/td><td colspan=\\\"3\\\"><span title=\\\"Codes: {http:\/\/terminology.hl7.org\/CodeSystem\/v3-NullFlavor UNK}\\\">unknown<\/span><\/td><\/tr><tr><td style=\\\"background-color: #f3f5da\\\" title=\\\"Other Ids (see the one above)\\\">Other Ids:<\/td><td colspan=\\\"3\\\"><ul><li>Medical record number:\\u00a01234-234-1243-12345678901m<\/li><li>Health Plan Identifier:\\u00a01234-234-1243-12345678901u<\/li><li>Patient external identifier:\\u00a01234-234-1243-12345678901a<\/li><\/ul><\/td><\/tr><tr><td style=\\\"background-color: #f3f5da\\\" title=\\\"Ways to contact the Patient\\\">Contact Details:<\/td><td colspan=\\\"3\\\"><ul><li>ph: (443)555-1212<\/li><li>ph: (410)678-2323<\/li><li>123 Main Street Pittsburgh PA 12519 <\/li><\/ul><\/td><\/tr><\/table><\/div>\"\n },\n \"identifier\" : [{\n \"type\" : {\n \"coding\" : [{\n \"system\" : \"http:\/\/terminology.hl7.org\/CodeSystem\/v2-0203\",\n \"code\" : \"MB\"\n }]\n },\n \"system\" : \"https:\/\/www.xxxhealthplan.com\/fhir\/memberidentifier\",\n \"value\" : \"https:\/\/www.xxxhealthplan.com\/fhir\/memberidentifier#1234-234-1243-12345678901\"\n },\n {\n \"type\" : {\n \"coding\" : [{\n \"system\" : \"http:\/\/terminology.hl7.org\/CodeSystem\/v2-0203\",\n \"code\" : \"MR\"\n }]\n },\n \"system\" : \"https:\/\/www.xxxhealthplan.com\/fhir\/medicalrecordnumber\",\n \"value\" : \"1234-234-1243-12345678901m\"\n },\n {\n \"type\" : {\n \"coding\" : [{\n \"system\" : \"http:\/\/terminology.hl7.org\/CodeSystem\/v2-0203\",\n \"code\" : \"XV\"\n }]\n },\n \"system\" : \"https:\/\/www.xxxhealthplan.com\/fhir\/uniquememberidentifier\",\n \"value\" : \"1234-234-1243-12345678901u\"\n },\n {\n \"type\" : {\n \"coding\" : [{\n \"system\" : \"http:\/\/terminology.hl7.org\/CodeSystem\/v2-0203\",\n \"code\" : \"PT\"\n }]\n },\n \"system\" : \"https:\/\/www.xxxhealthplan.com\/fhir\/patacctnum\",\n \"value\" : \"1234-234-1243-12345678901a\"\n }],\n \"active\" : true,\n \"name\" : [{\n \"family\" : \"Appleseed\",\n \"given\" : [\"Johnny\"]\n }],\n \"telecom\" : [{\n \"system\" : \"phone\",\n \"value\" : \"(443)555-1212\",\n \"rank\" : 1\n },\n {\n \"system\" : \"phone\",\n \"value\" : \"(410)678-2323\",\n \"rank\" : 2\n }],\n \"gender\" : \"male\",\n \"birthDate\" : \"1986-01-01\",\n \"address\" : [{\n \"type\" : \"physical\",\n \"line\" : [\"123 Main Street\"],\n \"city\" : \"Pittsburgh\",\n \"state\" : \"PA\",\n \"postalCode\" : \"12519\"\n }],\n \"maritalStatus\" : {\n \"coding\" : [{\n \"system\" : \"http:\/\/terminology.hl7.org\/CodeSystem\/v3-NullFlavor\",\n \"code\" : \"UNK\"\n }]\n }\n }\n },\n {\n \"name\": \"CoverageToMatch\",\n \"resource\": {\n \"resourceType\" : \"Coverage\",\n \"id\" : \"Coverage1\",\n \"meta\" : {\n \"profile\" : [\"http:\/\/hl7.org\/fhir\/us\/davinci-hrex\/StructureDefinition\/hrex-coverage\"]\n },\n \"text\" : {\n \"status\" : \"generated\",\n \"div\" : \"<div xmlns=\\\"http:\/\/www.w3.org\/1999\/xhtml\\\"><p><b>Generated Narrative: Coverage<\/b><a name=\\\"Coverage1\\\"> <\/a><\/p><div style=\\\"display: inline-block; background-color: #d9e0e7; padding: 6px; margin: 4px; border: 1px solid #8da1b4; border-radius: 5px; line-height: 60%\\\"><p style=\\\"margin-bottom: 0px\\\">Resource Coverage &quot;Coverage1&quot; <\/p><p style=\\\"margin-bottom: 0px\\\">Profile: <a href=\\\"http:\/\/hl7.org\/fhir\/us\/davinci-hrex\/STU1\/StructureDefinition-hrex-coverage.html\\\">HRex Coverage Profile<\/a><\/p><\/div><p><b>identifier<\/b>: id:\\u00a0234567<\/p><p><b>status<\/b>: active<\/p><p><b>beneficiary<\/b>: <a href=\\\"Patient-1.html\\\">Patient\/1<\/a> &quot; APPLESEED&quot;<\/p><p><b>payor<\/b>: <a href=\\\"Organization-Payer1.html\\\">Organization\/Payer1<\/a> &quot;Payer 1&quot;<\/p><\/div>\"\n },\n \"identifier\" : [{\n \"system\" : \"http:\/\/mitre.org\/old-payer\/identifiers\/coverage\",\n \"value\" : \"234567\"\n }],\n \"status\" : \"active\",\n \"beneficiary\" : {\n \"reference\" : \"Patient\/1\"\n },\n \"payor\" : [{\n \"reference\" : \"Organization\/Payer1\"\n }]\n }\n },\n {\n \"name\": \"CoverageToLink\",\n \"resource\": {\n \"resourceType\" : \"Coverage\",\n \"id\" : \"Coverage1\",\n \"meta\" : {\n \"profile\" : [\"http:\/\/hl7.org\/fhir\/us\/davinci-hrex\/StructureDefinition\/hrex-coverage\"]\n },\n \"text\" : {\n \"status\" : \"generated\",\n \"div\" : \"<div xmlns=\\\"http:\/\/www.w3.org\/1999\/xhtml\\\"><p><b>Generated Narrative: Coverage<\/b><a name=\\\"Coverage1\\\"> <\/a><\/p><div style=\\\"display: inline-block; background-color: #d9e0e7; padding: 6px; margin: 4px; border: 1px solid #8da1b4; border-radius: 5px; line-height: 60%\\\"><p style=\\\"margin-bottom: 0px\\\">Resource Coverage &quot;Coverage1&quot; <\/p><p style=\\\"margin-bottom: 0px\\\">Profile: <a href=\\\"http:\/\/hl7.org\/fhir\/us\/davinci-hrex\/STU1\/StructureDefinition-hrex-coverage.html\\\">HRex Coverage Profile<\/a><\/p><\/div><p><b>identifier<\/b>: id:\\u00a0234567<\/p><p><b>status<\/b>: active<\/p><p><b>beneficiary<\/b>: <a href=\\\"Patient-1.html\\\">Patient\/1<\/a> &quot; APPLESEED&quot;<\/p><p><b>payor<\/b>: <a href=\\\"Organization-Payer1.html\\\">Organization\/Payer1<\/a> &quot;Payer 1&quot;<\/p><\/div>\"\n },\n \"identifier\" : [{\n \"system\" : \"http:\/\/mitre.org\/old-payer\/identifiers\/coverage\",\n \"value\" : \"234567\"\n }],\n \"status\" : \"active\",\n \"beneficiary\" : {\n \"reference\" : \"Patient\/1\"\n },\n \"payor\" : [{\n \"reference\" : \"Organization\/Payer1\"\n }]\n }\n },\n {\n \"name\": \"Consent\",\n \"resource\": {\n \"resourceType\": \"Consent\",\n \"id\": \"consent-10\",\n \"meta\": {\n \"versionId\": \"1\",\n \"lastUpdated\": \"2024-05-15T03:00:41.179+00:00\",\n \"source\": \"#wNMHAAKavtFEfl9A\",\n \"profile\": [\n \"http:\/\/hl7.org\/fhir\/us\/davinci-pdex\/StructureDefinition\/pdex-consent\"\n ]\n },\n \"text\": {\n \"status\": \"generated\",\n \"div\": \"<div xmlns=\\\"http:\/\/www.w3.org\/1999\/xhtml\\\">Default Generated text for resource.<\/div>\"\n },\n \"status\": \"active\",\n \"scope\": {\n \"coding\": [\n {\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/consentscope\",\n \"code\": \"patient-privacy\"\n }\n ]\n },\n \"category\": [\n {\n \"coding\": [\n {\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/v3-ActCode\",\n \"code\": \"IDSCL\"\n }\n ]\n }\n ],\n \"patient\": {\n \"reference\": \"Patient\/1\"\n },\n \"performer\": [\n {\n \"reference\": \"Patient\/1\"\n }\n ],\n \"sourceReference\": {\n \"reference\": \"http:\/\/mitre.org\/DocumentReference\/someconsent-1\"\n },\n \"policy\": [\n {\n \"uri\": \"http:\/\/hl7.org\/fhir\/us\/davinci-hrex\/StructureDefinition-hrex-consent.html#sensitive\"\n }\n ],\n \"provision\": {\n \"type\": \"permit\",\n \"period\": {\n \"start\": \"2023-12-01\",\n \"end\": \"2024-03-31\"\n },\n \"actor\": [\n {\n \"role\": {\n \"coding\": [\n {\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/provenance-participant-type\",\n \"code\": \"performer\"\n }\n ]\n },\n \"reference\": {\n \"identifier\": {\n \"system\": \"http:\/\/hl7.org\/fhir\/sid\/us-npi\",\n \"value\": \"9876543210\"\n },\n \"display\": \"Old Health Plan\"\n }\n },\n {\n \"role\": {\n \"coding\": [\n {\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/v3-ParticipationType\",\n \"code\": \"IRCP\"\n }\n ]\n },\n \"reference\": {\n \"identifier\": {\n \"system\": \"http:\/\/hl7.org\/fhir\/sid\/us-npi\",\n \"value\": \"0123456789\"\n },\n \"display\": \"New Health Plan\"\n }\n }\n ],\n \"action\": [\n {\n \"coding\": [\n {\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/consentaction\",\n \"code\": \"disclose\"\n }\n ]\n }\n ]\n }\n }\n\n }\n ]\n}",
22
+ "_title": "Member Match Request for one match",
23
+ "_description": "A JSON payload for server's $member-match endpoint that has **exactly one match**",
24
+ "_type": "textarea"
25
+ },
26
+ {
27
+ "name": "workflow_everything_uscdi_attestation",
28
+ "value": "",
29
+ "_title": "\n Server's $everything operation returns all resources necessary to cover all USDCI\n elements known by the server if operating in US Realm\n ",
30
+ "_type": "radio",
31
+ "_optional": true,
32
+ "_options": {
33
+ "list_options": [
34
+ {
35
+ "label": "Yes",
36
+ "value": "yes"
37
+ },
38
+ {
39
+ "label": "No",
40
+ "value": "no"
41
+ }
42
+ ]
43
+ }
44
+ },
45
+ {
46
+ "name": "workflow_everything_privacy_attestation",
47
+ "value": "",
48
+ "_title": "\n Server's $everything operation shall honor jurisdictional and personal privacy\n restriction that are relevant to a member's health record\n ",
49
+ "_type": "radio",
50
+ "_optional": true,
51
+ "_options": {
52
+ "list_options": [
53
+ {
54
+ "label": "Yes",
55
+ "value": "yes"
56
+ },
57
+ {
58
+ "label": "No",
59
+ "value": "no"
60
+ }
61
+ ]
62
+ }
63
+ },
64
+ {
65
+ "name": "no_member_match_request",
66
+ "value": "{\r\n \"resourceType\": \"Parameters\",\r\n \"id\": \"member-match-in-provider\",\r\n \"parameter\": [\r\n {\r\n \"name\": \"MemberPatient\",\r\n \"resource\": {\r\n \"resourceType\": \"Patient\",\r\n \"id\": \"1\",\r\n \"identifier\": [\r\n {\r\n \"type\": {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/v2-0203\",\r\n \"code\": \"MB\"\r\n }\r\n ]\r\n },\r\n \"system\": \"http:\/\/mitre.org\/target-payer\/identifiers\/member\",\r\n \"value\": \"55678\",\r\n \"assigner\": {\r\n \"display\": \"Old Payer\"\r\n }\r\n }\r\n ],\r\n \"name\": [\r\n {\r\n \"use\": \"official\",\r\n \"family\": \"Person\",\r\n \"given\": [\r\n \"Patricia\",\r\n \"Ann\"\r\n ]\r\n }\r\n ],\r\n \"gender\": \"female\",\r\n \"birthDate\": \"1974-12-25\"\r\n }\r\n },\r\n {\r\n \"name\": \"CoverageToMatch\",\r\n \"resource\": {\r\n \"resourceType\": \"Coverage\",\r\n \"id\": \"9876B1\",\r\n \"identifier\": [\r\n {\r\n \"system\": \"http:\/\/mitre.org\/old-payer\",\r\n \"value\": \"DH10001235\"\r\n }\r\n ],\r\n \"status\": \"draft\",\r\n \"beneficiary\": {\r\n \"reference\": \"Patient\/1\"\r\n },\r\n \"period\": {\r\n \"start\": \"2011-05-23\",\r\n \"end\": \"2012-05-23\"\r\n },\r\n \"payor\": [\r\n {\r\n \"identifier\": {\r\n \"system\": \"http:\/\/hl7.org\/fhir\/sid\/us-npi\",\r\n \"value\": \"9876543210\"\r\n },\r\n \"display\": \"Old Health Plan\"\r\n }\r\n ],\r\n \"class\": [\r\n {\r\n \"type\": {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/coverage-class\",\r\n \"code\": \"group\"\r\n }\r\n ]\r\n },\r\n \"value\": \"CB135\"\r\n },\r\n {\r\n \"type\": {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/coverage-class\",\r\n \"code\": \"plan\"\r\n }\r\n ]\r\n },\r\n \"value\": \"B37FC\"\r\n },\r\n {\r\n \"type\": {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/coverage-class\",\r\n \"code\": \"subplan\"\r\n }\r\n ]\r\n },\r\n \"value\": \"P7\"\r\n },\r\n {\r\n \"type\": {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/coverage-class\",\r\n \"code\": \"class\"\r\n }\r\n ]\r\n },\r\n \"value\": \"SILVER\"\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n \"name\": \"Consent\",\r\n \"resource\": {\r\n \"resourceType\": \"Consent\",\r\n \"status\": \"active\",\r\n \"scope\": {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/consentscope\",\r\n \"code\": \"patient-privacy\"\r\n }\r\n ]\r\n },\r\n \"category\": [\r\n {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/v3-ActCode\",\r\n \"code\": \"IDSCL\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"patient\": {\r\n \"reference\": \"Patient\/1\"\r\n },\r\n \"performer\": [\r\n {\r\n \"reference\": \"Patient\/1\"\r\n }\r\n ],\r\n \"sourceReference\": {\r\n \"reference\": \"http:\/\/mitre.org\/DocumentReference\/someconsent.pdf\"\r\n },\r\n \"policy\": [\r\n {\r\n \"uri\": \"http:\/\/hl7.org\/fhir\/us\/davinci-hrex\/StructureDefinition-hrex-consent.html#regular\"\r\n }\r\n ],\r\n \"provision\": {\r\n \"type\": \"permit\",\r\n \"period\": {\r\n \"start\": \"2022-01-01\",\r\n \"end\": \"2022-01-31\"\r\n },\r\n \"actor\": [\r\n {\r\n \"role\": {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/provenance-participant-type\",\r\n \"code\": \"performer\"\r\n }\r\n ]\r\n },\r\n \"reference\": {\r\n \"identifier\": {\r\n \"system\": \"http:\/\/hl7.org\/fhir\/sid\/us-npi\",\r\n \"value\": \"9876543210\"\r\n },\r\n \"display\": \"Old Health Plan\"\r\n }\r\n },\r\n {\r\n \"role\": {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/v3-ParticipationType\",\r\n \"code\": \"IRCP\"\r\n }\r\n ]\r\n },\r\n \"reference\": {\r\n \"identifier\": {\r\n \"system\": \"http:\/\/hl7.org\/fhir\/sid\/us-npi\",\r\n \"value\": \"0000000001\"\r\n },\r\n \"display\": \"Provider organization\"\r\n }\r\n }\r\n ],\r\n \"action\": [\r\n {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/consentaction\",\r\n \"code\": \"disclose\"\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n }\r\n }\r\n ]\r\n}",
67
+ "_title": "Member Match Request for no matches",
68
+ "_description": "A JSON payload for server's $member-match endpoint that has **no matches**",
69
+ "_type": "textarea",
70
+ "_optional": true
71
+ },
72
+ {
73
+ "name": "multiple_member_match_request",
74
+ "value": null,
75
+ "_title": "Member Match Request for multiple matches",
76
+ "_description": "A JSON payload for server's $member-match endpoint that has **more than one match**",
77
+ "_type": "textarea",
78
+ "_optional": true
79
+ },
80
+ {
81
+ "name": "patient_ids",
82
+ "value": "1",
83
+ "_title": "Patient IDs",
84
+ "_description": "Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements",
85
+ "_type": "text"
86
+ },
87
+ {
88
+ "name": "implantable_device_codes",
89
+ "value": null,
90
+ "_title": "Implantable Device Type Code",
91
+ "_description": "Enter the code for an Implantable Device type, or multiple codes separated by commas. If blank, Inferno will validate all Device resources against the Implantable Device profile",
92
+ "_type": "text",
93
+ "_optional": true
94
+ }
95
+ ]
96
+ }
@@ -0,0 +1,96 @@
1
+ {
2
+ "title": "PDex Payer Server Preset for Client Tests",
3
+ "id": "pdex_payer_server_client_tests_preset",
4
+ "test_suite_id": "pdex_payer_server",
5
+ "inputs": [
6
+ {
7
+ "name": "url",
8
+ "value": "http://localhost:4567/custom/pdex_payer_client/fhir",
9
+ "_title": "FHIR Server Base Url",
10
+ "_type": "text"
11
+ },
12
+ {
13
+ "name": "credentials",
14
+ "value": null,
15
+ "_title": "OAuth Credentials",
16
+ "_type": "oauth_credentials",
17
+ "_optional": true
18
+ },
19
+ {
20
+ "name": "member_match_request",
21
+ "value": "{\"resourceType\" : \"Parameters\",\"id\" : \"member-match-in\",\"parameter\" : [{\"name\" : \"MemberPatient\",\"resource\" : {\"resourceType\" : \"Patient\",\"id\" : \"999\",\"identifier\" : [{\"type\" : {\"coding\" : [{\"system\" : \"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\" : \"MB\"}]},\"system\" : \"http://github.com/inferno-framework/target-payer/identifiers/member\",\"value\" : \"55678\",\"assigner\" : {\"display\" : \"Old Payer\"}}],\"name\" : [{\"use\" : \"official\",\"family\" : \"Person\",\"given\" : [\"Patricia\",\"Ann\"]}],\"gender\" : \"female\",\"birthDate\" : \"1974-12-25\"}},{\"name\" : \"CoverageToMatch\",\"resource\" : {\"resourceType\" : \"Coverage\",\"id\" : \"9876B1\",\"identifier\" : [{\"system\" : \"http://github.com/inferno-framework/old-payer\",\"value\" : \"DH10001235\"}],\"status\" : \"draft\",\"beneficiary\" : {\"reference\" : \"Patient/999\"},\"period\" : {\"start\" : \"2011-05-23\",\"end\" : \"2012-05-23\"},\"payor\" : [{\"identifier\" : {\"system\" : \"http://hl7.org/fhir/sid/us-npi\",\"value\" : \"9876543210\"},\"display\" : \"Old Health Plan\"}],\"class\" : [{\"type\" : {\"coding\" : [{\"system\" : \"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\" : \"group\"}]},\"value\" : \"CB135\"},{\"type\" : {\"coding\" : [{\"system\" : \"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\" : \"plan\"}]},\"value\" : \"B37FC\"},{\"type\" : {\"coding\" : [{\"system\" : \"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\" : \"subplan\"}]},\"value\" : \"P7\"},{\"type\" : {\"coding\" : [{\"system\" : \"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\" : \"class\"}]},\"value\" : \"SILVER\"}]}},{\"name\" : \"CoverageToLink\",\"resource\" : {\"resourceType\" : \"Coverage\",\"id\" : \"AA87654\",\"identifier\" : [{\"type\" : {\"coding\" : [{\"system\" : \"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\" : \"MB\"}]},\"system\" : \"http://github.com/inferno-framework/new-payer/identifiers/coverage\",\"value\" : \"234567\"}],\"status\" : \"active\",\"beneficiary\" : {\"reference\" : \"https://hl7.org/fhir/us/core/STU6.1/Patient/example\"},\"relationship\" : {\"coding\" : [{\"system\" : \"http://terminology.hl7.org/CodeSystem/data-absent-reason\",\"code\" : \"unknown\"}]},\"payor\" : [{\"identifier\" : {\"system\" : \"http://hl7.org/fhir/sid/us-npi\",\"value\" : \"0123456789\"},\"display\" : \"New Health Plan\"}]}},{\"name\" : \"Consent\",\"resource\" : {\"resourceType\" : \"Consent\",\"status\" : \"active\",\"scope\" : {\"coding\" : [{\"system\" : \"http://terminology.hl7.org/CodeSystem/consentscope\",\"code\" : \"patient-privacy\"}]},\"category\" : [{\"coding\" : [{\"system\" : \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\" : \"IDSCL\"}]}],\"patient\" : {\"reference\" : \"Patient/999\"},\"performer\" : [{\"reference\" : \"Patient/999\"}],\"sourceReference\" : {\"reference\" : \"http://github.com/inferno-framework/DocumentReference/someconsent.pdf\"},\"policy\" : [{\"uri\" : \"http://hl7.org/fhir/us/davinci-hrex/StructureDefinition-hrex-consent.html#regular\"}],\"provision\" : {\"type\" : \"permit\",\"period\" : {\"start\" : \"2022-01-01\",\"end\" : \"2022-01-31\"},\"actor\" : [{\"role\" : {\"coding\" : [{\"system\" : \"http://terminology.hl7.org/CodeSystem/provenance-participant-type\",\"code\" : \"performer\"}]},\"reference\" : {\"identifier\" : {\"system\" : \"http://hl7.org/fhir/sid/us-npi\",\"value\" : \"9876543210\"},\"display\" : \"Old Health Plan\"}},{\"role\" : {\"coding\" : [{\"system\" : \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\" : \"IRCP\"}]},\"reference\" : {\"identifier\" : {\"system\" : \"http://hl7.org/fhir/sid/us-npi\",\"value\" : \"0000000001\"},\"display\" : \"Provider organization\"}}],\"action\" : [{\"coding\" : [{\"system\" : \"http://terminology.hl7.org/CodeSystem/consentaction\",\"code\" : \"disclose\"}]}]}}}]}",
22
+ "_title": "Member Match Request for one match",
23
+ "_description": "A JSON payload for server's $member-match endpoint that has **exactly one match**",
24
+ "_type": "textarea"
25
+ },
26
+ {
27
+ "name": "workflow_everything_uscdi_attestation",
28
+ "value": "",
29
+ "_title": "\n Server's $everything operation returns all resources necessary to cover all USDCI\n elements known by the server if operating in US Realm\n ",
30
+ "_type": "radio",
31
+ "_optional": true,
32
+ "_options": {
33
+ "list_options": [
34
+ {
35
+ "label": "Yes",
36
+ "value": "yes"
37
+ },
38
+ {
39
+ "label": "No",
40
+ "value": "no"
41
+ }
42
+ ]
43
+ }
44
+ },
45
+ {
46
+ "name": "workflow_everything_privacy_attestation",
47
+ "value": "",
48
+ "_title": "\n Server's $everything operation shall honor jurisdictional and personal privacy\n restriction that are relevant to a member's health record\n ",
49
+ "_type": "radio",
50
+ "_optional": true,
51
+ "_options": {
52
+ "list_options": [
53
+ {
54
+ "label": "Yes",
55
+ "value": "yes"
56
+ },
57
+ {
58
+ "label": "No",
59
+ "value": "no"
60
+ }
61
+ ]
62
+ }
63
+ },
64
+ {
65
+ "name": "no_member_match_request",
66
+ "value": "{\r\n \"resourceType\": \"Parameters\",\r\n \"id\": \"member-match-in-provider\",\r\n \"parameter\": [\r\n {\r\n \"name\": \"MemberPatient\",\r\n \"resource\": {\r\n \"resourceType\": \"Patient\",\r\n \"id\": \"1\",\r\n \"identifier\": [\r\n {\r\n \"type\": {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/v2-0203\",\r\n \"code\": \"MB\"\r\n }\r\n ]\r\n },\r\n \"system\": \"http:\/\/mitre.org\/target-payer\/identifiers\/member\",\r\n \"value\": \"55678\",\r\n \"assigner\": {\r\n \"display\": \"Old Payer\"\r\n }\r\n }\r\n ],\r\n \"name\": [\r\n {\r\n \"use\": \"official\",\r\n \"family\": \"Person\",\r\n \"given\": [\r\n \"Patricia\",\r\n \"Ann\"\r\n ]\r\n }\r\n ],\r\n \"gender\": \"female\",\r\n \"birthDate\": \"1974-12-25\"\r\n }\r\n },\r\n {\r\n \"name\": \"CoverageToMatch\",\r\n \"resource\": {\r\n \"resourceType\": \"Coverage\",\r\n \"id\": \"9876B1\",\r\n \"identifier\": [\r\n {\r\n \"system\": \"http:\/\/mitre.org\/old-payer\",\r\n \"value\": \"DH10001235\"\r\n }\r\n ],\r\n \"status\": \"draft\",\r\n \"beneficiary\": {\r\n \"reference\": \"Patient\/1\"\r\n },\r\n \"period\": {\r\n \"start\": \"2011-05-23\",\r\n \"end\": \"2012-05-23\"\r\n },\r\n \"payor\": [\r\n {\r\n \"identifier\": {\r\n \"system\": \"http:\/\/hl7.org\/fhir\/sid\/us-npi\",\r\n \"value\": \"9876543210\"\r\n },\r\n \"display\": \"Old Health Plan\"\r\n }\r\n ],\r\n \"class\": [\r\n {\r\n \"type\": {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/coverage-class\",\r\n \"code\": \"group\"\r\n }\r\n ]\r\n },\r\n \"value\": \"CB135\"\r\n },\r\n {\r\n \"type\": {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/coverage-class\",\r\n \"code\": \"plan\"\r\n }\r\n ]\r\n },\r\n \"value\": \"B37FC\"\r\n },\r\n {\r\n \"type\": {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/coverage-class\",\r\n \"code\": \"subplan\"\r\n }\r\n ]\r\n },\r\n \"value\": \"P7\"\r\n },\r\n {\r\n \"type\": {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/coverage-class\",\r\n \"code\": \"class\"\r\n }\r\n ]\r\n },\r\n \"value\": \"SILVER\"\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n \"name\": \"Consent\",\r\n \"resource\": {\r\n \"resourceType\": \"Consent\",\r\n \"status\": \"active\",\r\n \"scope\": {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/consentscope\",\r\n \"code\": \"patient-privacy\"\r\n }\r\n ]\r\n },\r\n \"category\": [\r\n {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/v3-ActCode\",\r\n \"code\": \"IDSCL\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"patient\": {\r\n \"reference\": \"Patient\/1\"\r\n },\r\n \"performer\": [\r\n {\r\n \"reference\": \"Patient\/1\"\r\n }\r\n ],\r\n \"sourceReference\": {\r\n \"reference\": \"http:\/\/mitre.org\/DocumentReference\/someconsent.pdf\"\r\n },\r\n \"policy\": [\r\n {\r\n \"uri\": \"http:\/\/hl7.org\/fhir\/us\/davinci-hrex\/StructureDefinition-hrex-consent.html#regular\"\r\n }\r\n ],\r\n \"provision\": {\r\n \"type\": \"permit\",\r\n \"period\": {\r\n \"start\": \"2022-01-01\",\r\n \"end\": \"2022-01-31\"\r\n },\r\n \"actor\": [\r\n {\r\n \"role\": {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/provenance-participant-type\",\r\n \"code\": \"performer\"\r\n }\r\n ]\r\n },\r\n \"reference\": {\r\n \"identifier\": {\r\n \"system\": \"http:\/\/hl7.org\/fhir\/sid\/us-npi\",\r\n \"value\": \"9876543210\"\r\n },\r\n \"display\": \"Old Health Plan\"\r\n }\r\n },\r\n {\r\n \"role\": {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/v3-ParticipationType\",\r\n \"code\": \"IRCP\"\r\n }\r\n ]\r\n },\r\n \"reference\": {\r\n \"identifier\": {\r\n \"system\": \"http:\/\/hl7.org\/fhir\/sid\/us-npi\",\r\n \"value\": \"0000000001\"\r\n },\r\n \"display\": \"Provider organization\"\r\n }\r\n }\r\n ],\r\n \"action\": [\r\n {\r\n \"coding\": [\r\n {\r\n \"system\": \"http:\/\/terminology.hl7.org\/CodeSystem\/consentaction\",\r\n \"code\": \"disclose\"\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n }\r\n }\r\n ]\r\n}",
67
+ "_title": "Member Match Request for no matches",
68
+ "_description": "A JSON payload for server's $member-match endpoint that has **no matches**",
69
+ "_type": "textarea",
70
+ "_optional": true
71
+ },
72
+ {
73
+ "name": "multiple_member_match_request",
74
+ "value": null,
75
+ "_title": "Member Match Request for multiple matches",
76
+ "_description": "A JSON payload for server's $member-match endpoint that has **more than one match**",
77
+ "_type": "textarea",
78
+ "_optional": true
79
+ },
80
+ {
81
+ "name": "patient_ids",
82
+ "value": "999",
83
+ "_title": "Patient IDs",
84
+ "_description": "Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements",
85
+ "_type": "text"
86
+ },
87
+ {
88
+ "name": "implantable_device_codes",
89
+ "value": null,
90
+ "_title": "Implantable Device Type Code",
91
+ "_description": "Enter the code for an Implantable Device type, or multiple codes separated by commas. If blank, Inferno will validate all Device resources against the Implantable Device profile",
92
+ "_type": "text",
93
+ "_optional": true
94
+ }
95
+ ]
96
+ }
@@ -0,0 +1,33 @@
1
+ The Da Vinci Payer Data Exchange (PDex) Test Kit validates the conformance of PDex client and server implementations to [version 2.0.0 of the Da Vinci PDex Implementation Guide](https://hl7.org/fhir/us/davinci-pdex/STU2/).
2
+ <!-- break -->
3
+
4
+ ## Status
5
+
6
+ These tests are a DRAFT intended to allow PDex implementers to perform preliminary checks of their implementations against the PDex IG requirements and provide feedback on the tests. Future versions of these tests may validate other requirements and may change how these are tested.
7
+
8
+ ## Test Scope and Limitations
9
+
10
+ Documentation of the current tests and their limitations can be found in each suite’s description when the tests are run and can also be viewed in the source code:
11
+
12
+ - [Here](https://github.com/inferno-framework/davinci-pdex-test-kit/blob/main/lib/davinci_pdex_test_kit/docs/payer_client_suite_description_v200.md) for the Payer Client Test Suite
13
+ - [Here](https://github.com/inferno-framework/davinci-pdex-test-kit/blob/main/lib/davinci_pdex_test_kit/docs/payer_server_suite_description_v200.md) for the Payer Server Test Suite
14
+
15
+ ### Test Scope
16
+
17
+ To validate the behavior of the system under test, Inferno will act as an exchange partner. Specifically,
18
+
19
+ - **When testing a payer client:** Inferno will simulate a PDex payer 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 the conformant transfer of member data from an old payer (represented by Infero) to a new payer (represented by the client under test).
20
+ - **When testing a server:** Inferno will simulate a PDex payer client for the server under test to interact with. The server will be expected to respond to requests made by Inferno. Over the course of these interactions, Inferno will seek to observe the conformant transfer of member data from an old payer (represented by the server under test) to a new payer (represented by Inferno).
21
+
22
+ The test suites for both PDex clients and servers follow the same basic outline, each testing:
23
+
24
+ - A complete payer to payer single-member data exchange workflow
25
+ - Coverage of additional cases and must support elements (currently not present in the client tests)
26
+
27
+ ### Known Limitations
28
+
29
+ The PDex IG is under active development and the IG authors intend to change the approach to the workflows included within future versions of the IG. In particular, the payer to payer workflow will move from a single-patient workflow to a multi-patient workflow. This test suite focuses on validating the high-level payer to payer workflow and the ability of clients to use the current specification to access member data, without doing detailed validation of the mechanisms, including authentication and trust establishment, because those details are likely to change in future versions of the PDex specification.
30
+
31
+ ## Reporting Issues
32
+
33
+ Please report any issues with this set of tests in the [GitHub Issues](https://github.com/inferno-framework/davinci-pdex-test-kit/issues) section of the [open-source code repository](https://github.com/inferno-framework/davinci-pdex-test-kit).
@@ -20,14 +20,33 @@ Inferno will seek to observe conformant handling of PDex requirements around
20
20
  the transfer of member data from an old payer (represented by Infero) to a new payer
21
21
  (represented by the client under test). This includes
22
22
  - The ability of the client to complete the payer to payer data exchange workflow by
23
- - Initiating the request by invoking the `$member-match` operation.
24
- - Fetching all clinical data available from the old payer (Inferno) on the returned member.
23
+ - Initiating the workflow by invoking the `$member-match` operation.
24
+ - Fetching the returned member's full [member health
25
+ history](https://hl7.org/fhir/us/davinci-pdex/STU2/introduction.html#member-health-history)
26
+ from Inferno's simulated fhir server. In order to pass these tests, a client must
27
+ demonstrate their ability to retrieve instances of each profile that is part of the
28
+ member health history.
29
+
30
+ Inferno's simulated PDex FHIR server contains a patient with the following demographics which
31
+ will always be returned in `$member-match` responses while clients are demonstrating the
32
+ workflow. If systems want to create a similar patient in their system to use in the tests,
33
+ the demographics are:
34
+ - **Last Name**: Dexter882
35
+ - **Given Name**: Patty408
36
+ - **Identifier**: 99999 from system http://github.com/inferno-framework/target-payer/identifiers/member
37
+ - **Gender**: female
38
+ - **Birth Date**: 1980-01-15
39
+
40
+ This patient contains examples instances for all resource types in the PDex [member health
41
+ history](https://hl7.org/fhir/us/davinci-pdex/STU2/introduction.html#member-health-history),
42
+ so accessing the complete set of data on that patient starting from the `$member-match`
43
+ response allows systems to demonstrate the required capabilities.
25
44
 
26
45
  Because the process by which
27
46
  [payer servers identify each other and establish trust](https://hl7.org/fhir/us/davinci-pdex/STU2/payertopayerexchange.html#mtls-endpoint-discovery)
28
47
  is [still under active development](https://hl7.org/fhir/us/davinci-pdex/STU2/payertopayerexchange.html#future-direction-for-discovery-and-registration),
29
48
  Inferno does not currently facilitate or validate this part of the workflow.
30
- See the *Quick Start* section below for the specifics of how this test suite approaches authentication.
49
+ See the *Quick Start* section below for the specifics of how this test suite approaches auth.
31
50
 
32
51
  For further details on limitations of these tests, see the *Testing Limitations* section below.
33
52
 
@@ -44,35 +63,57 @@ For Inferno to simulate a server that returns a matching patient and responds to
44
63
  for that patient's data using FHIR read and search APIs, Inferno only needs to be able to
45
64
  identify when requests come from the client under test. Inferno piggybacks on the request
46
65
  authentication for this purpose. Testers must provide a bearer access token that will be
47
- provided within the `Authentication` header (`Bearer <token>`) on all requests made to
66
+ provided within the `Authorization` header (`Bearer <token>`) on all requests made to
48
67
  Inferno endpoints during the test. Inferno uses this information to associate the message
49
68
  with the test session and determine how to respond. How the token provided to Inferno is
50
69
  generated is up to the tester.
51
70
 
52
- Note: authentication options for these tests have not been finalized and are subject to change
71
+ Note: auth options for these tests have not been finalized and are subject to change
53
72
  as the requirements in the PDex IG evolve. If the implemented approach prevents you from using
54
73
  these tests, please
55
74
  [provide feedback](https://github.com/inferno-framework/davinci-pdex-test-kit/issues) so the
56
75
  limitations can be addressed.
57
76
 
77
+ Using the bearer token, the client under test will then demonstrate its ability to find
78
+ a patient using `$member-match` and retrieve corresponding clinical data using read and search
79
+ requests, the `$everything` operation, or the `$export` operation.
80
+
58
81
  ### Postman-based Demo
59
82
 
60
83
  If you do not have a PDex client but would like to try the tests out, you can use
61
84
  [this postman collection](https://github.com/inferno-framework/davinci-pdex-test-kit/blob/main/PDEX.postman_collection.json)
62
85
  to make requests against Inferno for these tests. To use the Postman demo on this test session
63
86
 
64
- 1. Download the [collection](https://github.com/inferno-framework/davinci-pdex-test-kit/blob/main/PDEX.postman_collection.json) and import it into [Postman](https://www.postman.com/downloads/).
87
+ 1. Download the [collection](https://github.com/inferno-framework/davinci-pdex-test-kit/blob/main/PDEX.postman_collection.json)
88
+ and import it into [Postman](https://www.postman.com/downloads/).
65
89
  2. Select the `PDex Payer Client Postman Demo` from the preset dropdown in the upper left.
66
90
  3. Click `Run All Tests` button in the upper right and click the `Submit` button in the dialog
67
91
  that appears.
68
- 4. When a `User Action Required` dialog will appear requesting a `$member-match` request be made,
69
- use Postman to send the `$member-match` request found in the `$member-match Requests` folder.
70
- 5. When a new `User Action Required` dialog will appear requesting clinical data requests be made,
71
- use Postman to send some or all of the requests in the `Clinical Data Requests` folder and click
72
- on the link in the dialog when done. If not all the requests are made, the test will not pass
73
- because the test requires that all available data be accessed.
74
-
75
- The tests will complete and the results made available for review.
92
+ 4. When a `User Action Required` dialog appears, use Postman to first send a `$member-match` request
93
+ found in the "$member-match Requests" folder (the `missing CoverageToMatch` entry will return
94
+ a result, but will fail request validation).
95
+ 5. Next, use the "Patient GET by identifier" request in the "Patient id Search" folder to turn the
96
+ returned Patient identifier (`99999` in system
97
+ `http://github.com/inferno-framework/target-payer/identifiers/member`) into a Patient resource id (`999`).
98
+ 6. Now, make clinical data requests found in the other
99
+ folders representing the three data access approaches: "Read and Search Requests",
100
+ "Patient $everything Requests", or "$export Requests". Specific paths that will completely pass
101
+ the tests include:
102
+ - Make each request within the "Read and Search Requests" folder to individually request instances
103
+ for each resource type associated with the returned patient.
104
+ - Make the "$everything" request in the "Patient $everything Requests". Then use the response to
105
+ get the next page by copying the url in the `Bundle.link` entry with `relation` "next" and put
106
+ it as the URL for the "$everything next page" request. Make that request to get the next page
107
+ of the response Bundle and then repeat with that response until there are no more "next" links.
108
+ You should need to make 2 next page requests total.
109
+ - Perform an `$export` by first making the "export kick-off" request. Then, copy the value of
110
+ the `content-location` response header into the URL of the "export status" request. Make that
111
+ request until it returns a body with JSON content (will be a few minutes). Next for each
112
+ `output` entry, copy the `url` into the URL of the "ndjson retrieval" request and make it to
113
+ get the data. Finally, make the "Read and Search Requests" to Read the Location
114
+ and PractitionerRole instances since those aren't returned by the `$export` operation.
115
+ 7. After making all the requests you want, click the "Click here" link to finish the tests
116
+ and make the results available for review.
76
117
 
77
118
  ## Testing Limitations
78
119
 
@@ -81,8 +122,57 @@ workflows included within future versions of the IG. In particular the payer to
81
122
  will move from a single-patient workflow to a multi-patient workflow. This test suite focuses on
82
123
  validating the high-level payer to payer workflow and the ability of clients to use the current
83
124
  specification to access member data, without doing detailed validation of the mechanisms,
84
- including authentication and trust establishment, because those details are likely to change
85
- in future versions of the PDex specification.
125
+ including authentication, trust establishment, and authorization, because those details are
126
+ likely to change in future versions of the PDex specification.
127
+
128
+ ### Happy Path Only
86
129
 
87
130
  At this time, coverage of additional scenarios beyond the happy path payer to payer workflow
88
- are not validated. These scenarios will be tested in future versions of the tests.
131
+ are not validated. These scenarios, such as a failed member match, will be tested in future
132
+ versions of the tests.
133
+
134
+ ### Demographic Matching
135
+
136
+ To reduce burden on tester and avoid the need to implement a robust matching algorithm,
137
+ Inferno does not require specific demographics to be provided in the `$member-match`
138
+ request. Instead, it will return a hardcoded match regardless of what demographics are provided.
139
+
140
+ ### Data Set
141
+
142
+ The set of data available on the matched patient is incomplete in the following ways:
143
+ - While it contains instances of all resource types in the [member health
144
+ history](https://hl7.org/fhir/us/davinci-pdex/STU2/introduction.html#member-health-history),
145
+ it does not contain instances of the following profiles:
146
+ - US Core DiagnosticReport Profile for Report and Note exchange
147
+ - US Core Implantable Device Profile
148
+ - US Core Pediatric BMI for Age Observation Profile
149
+ - US Core Pediatric Weight for Height Observation Profile
150
+ - US Core Practitioner Profile
151
+ - US Core PractitionerRole Profile
152
+ - US Core Procedure Profile
153
+ - US Core Provenance Profile
154
+ - US Core Pulse Oximetry Profile
155
+ - US Core Smoking Status Observation Profile
156
+ - Does not contain examples of all must support elements populated on the demonstrated profiles.
157
+ - Not all instances have corresponding Provenance resources.
158
+ - May not represent a coherent and clinically valid scenario.
159
+
160
+ ### Authorization
161
+
162
+ The [PDex Payer to Payer
163
+ workflow](https://hl7.org/fhir/us/davinci-pdex/STU2/payertopayerexchange.html#member-match-with-consent)
164
+ includes two auth steps, one for obtaining a token that allows `$member-match` invocations and another
165
+ that gets access for a specific member Patient. Inferno requires that clients choose and send a single
166
+ bearer token for the duration of the tests.
167
+
168
+ ### Requireed Patient id Search
169
+
170
+ The [HRex 1.0.0 $member-match
171
+ operation](https://hl7.org/fhir/us/davinci-hrex/STU1/OperationDefinition-member-match.html#membermatch)
172
+ returns a patient `identifier`, but not the id of the Patient instance. While the [current version of HRex
173
+ `$member-match`](https://build.fhir.org/ig/HL7/davinci-ehrx/OperationDefinition-member-match.html#parameters)
174
+ does support returning, HRex 1.0.0 was the version published when PDex 2.0.0 was published so this test suite's
175
+ simulation of `$member-match` does not return the Patient resource id. Thus, client systems need to perform a
176
+ Patient-level search interaction using that identifier to get resource id which can then be used to request
177
+ additional clinical data. This isn't explicitly required by PDex but it is supported and is needed to
178
+ accomplish the workflow goals with the available operations.
@@ -1,3 +1,7 @@
1
+ # fhir_resource_navigation.rb
2
+ # This file was borrowed from the US Core Generator for
3
+ # must support validation.
4
+
1
5
  module DaVinciPDexTestKit
2
6
  module FHIRResourceNavigation
3
7
  DAR_EXTENSION_URL = 'http://hl7.org/fhir/StructureDefinition/data-absent-reason'.freeze
@@ -151,4 +155,4 @@ module DaVinciPDexTestKit
151
155
  end
152
156
  end
153
157
  end
154
- end
158
+ end
@@ -1,3 +1,7 @@
1
+ # group_metadata
2
+ # This file was borrowed from the US Core Generator
3
+ # for must support validation.
4
+
1
5
  module DaVinciPDexTestKit
2
6
  class GroupMetadata
3
7
  ATTRIBUTES = [
@@ -106,4 +110,4 @@ module DaVinciPDexTestKit
106
110
  end
107
111
  end
108
112
  end
109
- end
113
+ end
@@ -0,0 +1,16 @@
1
+ require_relative 'version'
2
+
3
+ module DaVinciPDexTestKit
4
+ class Metadata < Inferno::TestKit
5
+ id :pdex_test_kit
6
+ title 'DaVinci PDex Test Kit'
7
+ suite_ids ['pdex_payer_server', 'pdex_payer_client']
8
+ tags ['Da Vinci']
9
+ last_updated DaVinciPDexTestKit::LAST_UPDATED
10
+ version DaVinciPDexTestKit::VERSION
11
+ maturity 'Low'
12
+ authors ['Karl Naden', 'Shaumik Ashraf', 'Diego Griese']
13
+ repo 'https://github.com/inferno-framework/davinci-pdex-test-kit'
14
+ description File.read(File.expand_path('docs/davinci_pdex_test_kit_description_v200.md', __dir__))
15
+ end
16
+ end
@@ -1,3 +1,6 @@
1
+ # must_support.rb
2
+ # This file was borrowed from the US Core Generator.
3
+
1
4
  require_relative 'fhir_resource_navigation'
2
5
 
3
6
  module DaVinciPDexTestKit
@@ -1,23 +1,25 @@
1
1
  require_relative '../client_validation_test.rb'
2
2
 
3
3
  module DaVinciPDexTestKit
4
- class PDexInitialMemberMatchValidationTest < Inferno::Test
5
- include DaVinciPDexTestKit::ClientValidationTest
6
- include URLs
7
-
8
- id :initial_member_match_validation_test
9
- title 'Client provides a valid $member-match request'
10
- description %(
11
- This test will validate the received $member-match-request input, ensuring it corresponds to the [HRex member-match-in profile](http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-parameters-member-match-in)
12
- )
13
- input :access_token
14
-
15
- run do
16
- skip_if !member_match_request.present?, "No previous $member-match request received"
17
-
18
- parameters = FHIR.from_contents(member_match_request.request_body)
19
- assert_resource_type(:parameters, resource: parameters)
20
- assert_valid_resource(resource: parameters, profile_url: 'http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-parameters-member-match-in')
4
+ module PDexPayerClient
5
+ class PDexInitialMemberMatchValidationTest < Inferno::Test
6
+ include ClientValidationTest
7
+
8
+ id :pdex_initial_member_match_validation
9
+ title 'Client provides a valid $member-match request'
10
+ description %(
11
+ This test will validate the received $member-match-request input, ensuring it corresponds to the
12
+ [HRex member-match-in profile](http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-parameters-member-match-in).
13
+ )
14
+ input :access_token
15
+
16
+ run do
17
+ skip_if !member_match_request.present?, "No previous $member-match request received"
18
+
19
+ parameters = FHIR.from_contents(member_match_request.request_body)
20
+ assert_resource_type(:parameters, resource: parameters)
21
+ assert_valid_resource(resource: parameters, profile_url: 'http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-parameters-member-match-in')
22
+ end
21
23
  end
22
24
  end
23
- end
25
+ end