davinci_pdex_test_kit 0.10.5 → 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.
- checksums.yaml +4 -4
- data/config/presets/pdex_payer_client_postman_preset.json +12 -0
- data/config/presets/pdex_payer_server_fhir_foundry_ri_preset.json +96 -0
- data/config/presets/pdex_payer_server_inferno_ri_preset.json +96 -0
- data/lib/davinci_pdex_test_kit/docs/davinci_pdex_test_kit_description_v200.md +33 -0
- data/lib/davinci_pdex_test_kit/docs/payer_client_suite_description_v200.md +107 -17
- data/lib/davinci_pdex_test_kit/fhir_resource_navigation.rb +5 -1
- data/lib/davinci_pdex_test_kit/group_metadata.rb +5 -1
- data/lib/davinci_pdex_test_kit/igs/davinci-pdex-2.0.0.tgz +0 -0
- data/lib/davinci_pdex_test_kit/igs/us-core-3.1.1.tgz +0 -0
- data/lib/davinci_pdex_test_kit/metadata.rb +16 -0
- data/lib/davinci_pdex_test_kit/must_support_test.rb +3 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_member_match_tests/client_member_match_validation_test.rb +20 -18
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_validation_test.rb +96 -43
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_workflow_interaction_test.rb +49 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/allergyintolerance_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/careplan_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/careteam_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/clinical_data_request_check_test.rb +24 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/condition_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/device_clinical_data_request_test.rb +19 -17
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/diagnosticreport_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/documentreference_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/encounter_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/explanationofbenefit_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/goal_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/immunization_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/location_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/medicationdispense_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/medicationrequest_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/observation_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/organization_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/patient_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/patient_id_search_request_check_test.rb +21 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/practitioner_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/practitionerrole_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/procedure_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/collection.rb +46 -44
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/binary_endpoint.rb +26 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/export_endpoint.rb +29 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/export_status_endpoint.rb +38 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/member_match_endpoint.rb +51 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/next_page_endpoint.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/patient_endpoint.rb +25 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/patient_everything_endpoint.rb +34 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/proxy_endpoint.rb +178 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/resource_read_endpoint.rb +21 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/resource_search_endpoint.rb +22 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/token_endpoint.rb +27 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server.rb +53 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/tags.rb +15 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/urls.rb +51 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client_suite.rb +101 -144
- data/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_minimal_data_validation.rb +1 -1
- data/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_must_support_validation.rb +1 -1
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_id_search_test.rb +5 -4
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_identifier_search_test.rb +5 -4
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_must_support_test.rb +3 -2
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_last_updated_search_test.rb +7 -6
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_service_date_search_test.rb +7 -6
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_type_search_test.rb +7 -6
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_use_search_test.rb +6 -5
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_provenance_revinclude_search_test.rb +10 -7
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_read_test.rb +1 -1
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_reference_resolution_test.rb +3 -2
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_validation_test.rb +1 -1
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/metadata.yml +12 -12
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit_group.rb +12 -14
- data/lib/davinci_pdex_test_kit/pdex_payer_server/export_patient_group.rb +3 -4
- data/lib/davinci_pdex_test_kit/pdex_payer_server/export_validation_group.rb +2 -6
- data/lib/davinci_pdex_test_kit/pdex_payer_server/member_match_request_local_references_validation.rb +1 -1
- data/lib/davinci_pdex_test_kit/pdex_payer_server/member_match_request_profile_validation.rb +1 -3
- data/lib/davinci_pdex_test_kit/pdex_payer_server/multiple_member_matches_group.rb +7 -8
- data/lib/davinci_pdex_test_kit/pdex_payer_server/no_member_matches_group.rb +7 -8
- data/lib/davinci_pdex_test_kit/pdex_payer_server/patient_operation_in_capability_statement_validation.rb +1 -3
- data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_clinical_data_group.rb +3 -5
- data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_everything_group.rb +2 -4
- data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_export_group.rb +2 -4
- data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_member_match_group.rb +12 -13
- data/lib/davinci_pdex_test_kit/pdex_payer_server_suite.rb +13 -14
- data/lib/davinci_pdex_test_kit/version.rb +2 -3
- data/lib/davinci_pdex_test_kit.rb +1 -2
- metadata +65 -24
- data/lib/davinci_pdex_test_kit/ext/inferno_core/record_response_route.rb +0 -98
- data/lib/davinci_pdex_test_kit/ext/inferno_core/request.rb +0 -19
- data/lib/davinci_pdex_test_kit/ext/inferno_core/runnable.rb +0 -18
- data/lib/davinci_pdex_test_kit/mock_server.rb +0 -281
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_member_match_tests/client_member_match_submit_test.rb +0 -24
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/client_member_match_must_support_submit_test.rb +0 -26
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/client_member_match_must_support_validation_test.rb +0 -32
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/metadata.yml +0 -61
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/initial_scratch_storing.rb +0 -32
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/initial_wait_test.rb +0 -31
- data/lib/davinci_pdex_test_kit/tags.rb +0 -11
- data/lib/davinci_pdex_test_kit/urls.rb +0 -77
- /data/lib/davinci_pdex_test_kit/{metadata → pdex_payer_client/mock_server/resources}/mock_capability_statement.json +0 -0
- /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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 318708e3bf373fe0429d145f0bec49fe07739eea1a296dff8b6aedef2769b361
|
4
|
+
data.tar.gz: d2ab19dc58bc8734324f60b6eda28350df3e999c94e15218ba614df630fc02e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 "Coverage1" <\/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> " APPLESEED"<\/p><p><b>payor<\/b>: <a href=\\\"Organization-Payer1.html\\\">Organization\/Payer1<\/a> "Payer 1"<\/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 "Coverage1" <\/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> " APPLESEED"<\/p><p><b>payor<\/b>: <a href=\\\"Organization-Payer1.html\\\">Organization\/Payer1<\/a> "Payer 1"<\/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
|
24
|
-
- Fetching
|
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
|
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 `
|
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:
|
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)
|
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
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
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
|
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
|
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
|
Binary file
|
Binary file
|
@@ -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,23 +1,25 @@
|
|
1
1
|
require_relative '../client_validation_test.rb'
|
2
2
|
|
3
3
|
module DaVinciPDexTestKit
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
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
|