{
  "info": {
    "_postman_id": "c14412ec-4570-4e02-ba2d-b93e9a55e03c",
    "name": "ProviderAccessAPI_Sandbox",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "name": "GroupDiscovery",
      "item": [
        {
          "name": "GroupDiscovery",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "// Always clear group_id upfront to prevent stale values",
                  "pm.environment.set(\"group_id\", \"\");",
                  "",
                  "// Parse the response JSON",
                  "let response = pm.response.json();",
                  "",
                  "if (response.entry && response.entry.length > 0) {",
                  "    let groupId = response.entry[0].resource.id;",
                  "    pm.environment.set(\"group_id\", groupId);",
                  "    console.log(\"group_id set to:\", groupId);",
                  "} else {",
                  "    console.log(\"No Group resource found in response\");",
                  "}"
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/Group/$group-discovery?name=Group ATR 1&identifier=1004000000100",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "Group",
                "$group-discovery"
              ],
              "query": [
                {
                  "key": "name",
                  "value": "Group ATR 1"
                },
                {
                  "key": "identifier",
                  "value": "1004000000100"
                }
              ]
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "DaVinciExport",
      "item": [
        {
          "name": "davinci export",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "// Always clear status-check-url upfront to prevent stale values",
                  "pm.environment.set(\"status-check-url\", \"\");",
                  "",
                  "let status = pm.response.code;",
                  "",
                  "if (status === 202) {",
                  "    let contentLocation = pm.response.headers.get(\"Content-Location\");",
                  "",
                  "    if (contentLocation) {",
                  "        pm.environment.set(\"status-check-url\", contentLocation);",
                  "        console.log(\"status-check-url set to:\", contentLocation);",
                  "    } else {",
                  "        console.error(\"Content-Location header missing on 202 response.\");",
                  "        pm.test(\"Content-Location must be present on 202\", () => {",
                  "            pm.expect(contentLocation, \"Content-Location header is missing on 202 response\").to.not.be.null;",
                  "        });",
                  "    }",
                  "} else {",
                  "    console.log(\"Non-202 response received:\", status, \"— skipping Content-Location check.\");",
                  "}"
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Prefer",
                "value": "respond-async",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{base_url}}/Group/{{group_id}}/$davinci-export?exportType=hl7.fhir.us.davinci-atr&_type=Patient,Coverage,Group",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "Group",
                "{{group_id}}",
                "$davinci-export"
              ],
              "query": [
                {
                  "key": "patient",
                  "value": "PAT-PAA-10001,PAT-PAA-10002,test",
                  "disabled": true
                },
                {
                  "key": "_until",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "_since",
                  "value": "2024-08-26",
                  "disabled": true
                },
                {
                  "key": "_typeFilter",
                  "value": "Observation?_profile=http://hl7.org/fhir/us/core/StructureDefinition/us-core-blood-pressure,ExplanationOfBenefit?_profile=http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional,Medication?code=52441",
                  "disabled": true
                },
                {
                  "key": "exportType",
                  "value": "hl7.fhir.us.davinci-atr"
                },
                {
                  "key": "_type",
                  "value": "Patient,Coverage,Group"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "status check for export",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "// Always clear all download URLs upfront to prevent stale values",
                  "[\"group\", \"patient\", \"coverage\"].forEach(type => {",
                  "    pm.environment.set(type + \"-download-url\", \"\");",
                  "});",
                  "pm.environment.set(\"operationoutcome-error-download-url\", \"\");",
                  "",
                  "let status = pm.response.code;",
                  "",
                  "// Function to normalize type name to variable name",
                  "function normalizeType(type) {",
                  "    return type.toLowerCase() + \"-download-url\";",
                  "}",
                  "",
                  "if (status === 202) {",
                  "    // Still in progress — warn and fail so download steps are not run",
                  "    console.warn(\"Export still in progress. Do not proceed to download steps.\");",
                  "    pm.test(\"Export must be complete before downloading\", () => {",
                  "        pm.expect(status, \"Export job is still in progress (202). Wait and re-run status check.\").to.equal(200);",
                  "    });",
                  "",
                  "} else if (status === 200) {",
                  "    let responseJson = pm.response.json();",
                  "",
                  "    // Handle success output files",
                  "    if (responseJson.output && Array.isArray(responseJson.output)) {",
                  "        responseJson.output.forEach(item => {",
                  "            let variableName = normalizeType(item.type);",
                  "            pm.environment.set(variableName, item.url);",
                  "            console.log(`Set ${variableName} = ${item.url}`);",
                  "        });",
                  "    }",
                  "",
                  "    // Handle error files — optional, already cleared above, only set if present",
                  "    if (responseJson.error && Array.isArray(responseJson.error)) {",
                  "        responseJson.error.forEach(item => {",
                  "            let variableName = item.type.toLowerCase() + \"-error-download-url\";",
                  "            pm.environment.set(variableName, item.url);",
                  "            console.log(`Set ${variableName} = ${item.url}`);",
                  "        });",
                  "    }",
                  "} else {",
                  "    console.log(\"Non-200/202 response received:\", status, \"— skipping download URL extraction.\");",
                  "}"
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{status-check-url}}",
              "host": [
                "{{status-check-url}}"
              ]
            }
          },
          "response": []
        },
        {
          "name": "download-url-group",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{group-download-url}}",
              "host": [
                "{{group-download-url}}"
              ]
            }
          },
          "response": []
        },
        {
          "name": "download-url-patient",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{patient-download-url}}",
              "host": [
                "{{patient-download-url}}"
              ]
            }
          },
          "response": []
        },
        {
          "name": "download-url-coverage",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{coverage-download-url}}",
              "host": [
                "{{coverage-download-url}}"
              ]
            }
          },
          "response": []
        },
        {
          "name": "download-url-operation-outcome",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{operationoutcome-error-download-url}}",
              "host": [
                "{{operationoutcome-error-download-url}}"
              ]
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Reconciliation API",
      "item": [
        {
          "name": "member-add",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"patientReference\":\"7ee8d41f-6966-4be8-85cb-baa7ba78f72c\",\r\n    \"providerReference\":\"4bec7c35-04a3-4306-a3e5-8d21870a97b0\",\r\n    \"attributionPeriod\":{\r\n        \"start\":\"2021-06-24\",\r\n        \"end\":\"2021-06-24\"\r\n    }\r\n}\r\n\r\n// {\r\n//     \"memberId\":\"PAT-PVA-10001\",\r\n//     \"providerNpi\":\"1004000000\",\r\n//     \"attributionPeriod\":{\r\n//         \"start\":\"2021-06-24\",\r\n//         \"end\":\"2021-06-24\"\r\n//     }\r\n// }",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/Group/{{group_id}}/$member-add",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "Group",
                "{{group_id}}",
                "$member-add"
              ]
            }
          },
          "response": []
        },
        {
          "name": "member-remove",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"patientReference\":\"7ee8d41f-6966-4be8-85cb-baa7ba78f72c\",\r\n    \"providerReference\":\"4bec7c35-04a3-4306-a3e5-8d21870a97b0\",\r\n    \"attributionPeriod\":{\r\n        \"start\":\"2021-06-24\",\r\n        \"end\":\"2021-06-24\"\r\n    }\r\n}\r\n\r\n\r\n// {\r\n//     \"memberId\":\"PAT-PVA-10001\",\r\n//     \"providerNpi\":\"1004000000\",\r\n//     \"attributionPeriod\":{\r\n//         \"start\":\"2021-06-24\",\r\n//         \"end\":\"2021-06-24\"\r\n//     }\r\n// }",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/Group/{{group_id}}/$member-remove",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "Group",
                "{{group_id}}",
                "$member-remove"
              ]
            }
          },
          "response": []
        },
        {
          "name": "attribution_status",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n   \"memberId\":\"PAT-PVA-10001\"  \r\n}\r\n\r\n\r\n// {\r\n//     \"patientReference\":\"df1db0f9-28c7-4bf0-ad1b-b076ff623a64\"\r\n// }",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/Group/{{group_id}}/$attribution-status",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "Group",
                "{{group_id}}",
                "$attribution-status"
              ]
            }
          },
          "response": []
        },
        {
          "name": "confirm-attribution-list",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/Group/{{group_id}}/$confirm-attribution-list",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "Group",
                "{{group_id}}",
                "$confirm-attribution-list"
              ]
            }
          },
          "response": []
        }
      ]
    }
  ],
  "auth": {
    "type": "oauth2",
    "oauth2": [
      {
        "key": "clientId",
        "value": "{{client_id}}",
        "type": "string"
      },
      {
        "key": "clientSecret",
        "value": "{{client_secret}}",
        "type": "string"
      },
      {
        "key": "accessTokenUrl",
        "value": "{{access_token_url}}",
        "type": "string"
      },
      {
        "key": "scope",
        "value": "{{scope}}",
        "type": "string"
      },
      {
        "key": "grant_type",
        "value": "client_credentials",
        "type": "string"
      },
      {
        "key": "tokenName",
        "value": "Token",
        "type": "string"
      },
      {
        "key": "addTokenTo",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "packages": {},
        "requests": {},
        "exec": [
          ""
        ]
      }
    },
    {
      "listen": "test",
      "script": {
        "type": "text/javascript",
        "packages": {},
        "requests": {},
        "exec": [
          ""
        ]
      }
    }
  ],
  "variable": []
}
