{
  "info": {
    "_postman_id": "590fcb3a-c84b-40e9-adfd-7df367914fea",
    "name": "NCTS: Integration Examples",
    "description": "Example integration with the NCTS\n\nYou will need to set the environment variables for \"fhir.url\", \"auth.url\", \"synd.url\", \"auth.client_id\" and \"auth.client_secret\"\n\nFor the NCTS, set these to:\nauth.url = https://api.healthterminologies.gov.au/oauth2/token\nfhir.url = https://api.healthterminologies.gov.au/integration/R4/fhir or https://api.healthterminologies.gov.au/integration/v2/fhir\nsynd.url = https://api.healthterminologies.gov.au/syndication/v1/syndication.xml\nauth.client_id = <NCTS_ASSIGNED_CLIENT_ID>\nauth.client_secret = <NCTS_ASSIGNED_CLIENT_SECRET>",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "name": "Authentication Examples",
      "item": [
        {
          "name": "Request Token, via Basic Auth header",
          "event": [
            {
              "listen": "test",
              "script": {
                "id": "2ee7adee-7197-4715-b725-94b80e4f3544",
                "exec": [
                  "// Assert success",
                  "tests['Status code is 200'] = responseCode.code === 200;",
                  "",
                  "// Assert Content-Type exists",
                  "var contentTypeHeaderExists = responseHeaders.hasOwnProperty('Content-Type');",
                  "tests['Has Content-Type'] = contentTypeHeaderExists;",
                  "",
                  "// Assert correct Content-Type",
                  "if (contentTypeHeaderExists) {",
                  "    tests['Content-Type is application/json'] = ",
                  "      responseHeaders['Content-Type'].has('application/json');",
                  "}",
                  "",
                  "// Save the Bearer Token as an environment variable",
                  "var jsonData = JSON.parse(responseBody);",
                  "pm.environment.set('auth.token', jsonData.access_token);",
                  "if (responseCode.code === 200 && pm.environment.get('fhir.url').match('.+\\.healthterminologies.gov.au') !== null) {",
                  "    setSctauVersions()",
                  "        .then((data) => {})",
                  "        .catch((error) =>  { console.log('error trying to determine the SCTAU versions for this FHIR server: ', error) })",
                  "} else {",
                  "    pm.environment.set('sctau.versions', null);",
                  "    pm.environment.set('sctau.versions.latest', null);",
                  "    pm.environment.set('sctau.versions.previous', null);",
                  "}",
                  "",
                  "function setSctauVersions() {",
                  "    return new Promise(",
                  "        resolve => {",
                  "            const postReq = {",
                  "                url: pm.environment.get('fhir.url') + '/CodeSystem/_search',",
                  "                method: 'POST',",
                  "                body: {",
                  "                    'system': 'http://snomed.info/sct'",
                  "                },",
                  "                header: { 'Content-Type': 'application/x-www-form-urlencoded' }",
                  "            };",
                  "            let authToken = pm.environment.get('auth.token');",
                  "            if (authToken) {",
                  "                postReq.header['Authorization'] = 'Bearer ' + authToken;",
                  "            }",
                  "            pm.sendRequest(postReq, function(err, res) {",
                  "                if (!err) {",
                  "                    const sctauVersions = res.json().entry.filter(entry => entry.resource.resourceType = 'CodeSystem' && entry.resource.version.match(/^http:\\/\\/snomed\\.info\\/sct\\/32506021000036107/)).map(entry => entry.resource.version.replace(/(^http:\\/\\/snomed\\.info\\/sct\\/32506021000036107\\/version\\/|\\/$)/gi, '')).sort();",
                  "                    const previousVersion = sctauVersions[0];",
                  "                    const latestVersion = sctauVersions[sctauVersions.length-1];",
                  "                    pm.environment.set('sctau.versions', sctauVersions);",
                  "                    pm.environment.set('sctau.versions.latest', latestVersion);",
                  "                    pm.environment.set('sctau.versions.previous', previousVersion);",
                  "                    return resolve(sctauVersions);",
                  "                } else {",
                  "                    console.error(err);",
                  "                    return;",
                  "                }",
                  "            });",
                  "        });",
                  "}"
                ],
                "type": "text/javascript"
              }
            },
            {
              "listen": "prerequest",
              "script": {
                "id": "294b4671-d59d-4f47-a6bc-c23fdf3fa506",
                "exec": [
                  "postman.setEnvironmentVariable(\"auth.basic_credentials\", btoa(postman.getEnvironmentVariable(\"auth.client_id\") + \":\" + postman.getEnvironmentVariable(\"auth.client_secret\")));"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Basic {{auth.basic_credentials}}"
              }
            ],
            "body": {
              "mode": "urlencoded",
              "urlencoded": [
                {
                  "key": "grant_type",
                  "value": "client_credentials",
                  "type": "text"
                }
              ]
            },
            "url": {
              "raw": "{{auth.url}}",
              "host": [
                "{{auth.url}}"
              ]
            },
            "description": "This example shows how to request a new Bearer token, by providing the Base64 encoded client credentials in a Basic Auth header. The credentials are encoded as a pre-request script, based on the environment variables \"auth.client_id\" and \"auth.client_secret\"\n\nNOTE: Once the request has executed, the Bearer token is stored in an environment variable called \"auth.token\", for use in subsequent requests. If the \"fhir.url\" variable is pointed at the Integration API, this scenario then also queries the server and sets the \"sctau.versions.previous\" variable for use in subsequent examples"
          },
          "response": []
        },
        {
          "name": "Request Token, via request body",
          "event": [
            {
              "listen": "test",
              "script": {
                "id": "a6f62d42-421d-41f5-aad7-3593a2ef98f2",
                "exec": [
                  "// Assert success",
                  "tests['Status code is 200'] = responseCode.code === 200;",
                  "",
                  "// Assert Content-Type exists",
                  "var contentTypeHeaderExists = responseHeaders.hasOwnProperty('Content-Type');",
                  "tests['Has Content-Type'] = contentTypeHeaderExists;",
                  "",
                  "// Assert correct Content-Type",
                  "if (contentTypeHeaderExists) {",
                  "    tests['Content-Type is application/json'] = ",
                  "      responseHeaders['Content-Type'].has('application/json');",
                  "}",
                  "",
                  "// Save the Bearer Token as an environment variable",
                  "var jsonData = JSON.parse(responseBody);",
                  "pm.environment.set('auth.token', jsonData.access_token);",
                  "if (responseCode.code === 200 && pm.environment.get('fhir.url').match('.+\\.healthterminologies.gov.au') !== null) {",
                  "    setSctauVersions()",
                  "        .then((data) => {})",
                  "        .catch((error) =>  { console.log('error trying to determine the SCTAU versions for this FHIR server: ', error) })",
                  "} else {",
                  "    pm.environment.set('sctau.versions', null);",
                  "    pm.environment.set('sctau.versions.latest', null);",
                  "    pm.environment.set('sctau.versions.previous', null);",
                  "}",
                  "",
                  "function setSctauVersions() {",
                  "    return new Promise(",
                  "        resolve => {",
                  "            const postReq = {",
                  "                url: pm.environment.get('fhir.url') + '/CodeSystem/_search',",
                  "                method: 'POST',",
                  "                body: {",
                  "                    'system': 'http://snomed.info/sct'",
                  "                },",
                  "                header: { 'Content-Type': 'application/x-www-form-urlencoded' }",
                  "            };",
                  "            let authToken = pm.environment.get('auth.token');",
                  "            if (authToken) {",
                  "                postReq.header['Authorization'] = 'Bearer ' + authToken;",
                  "            }",
                  "            pm.sendRequest(postReq, function(err, res) {",
                  "                if (!err) {",
                  "                    const sctauVersions = res.json().entry.filter(entry => entry.resource.resourceType = 'CodeSystem' && entry.resource.version.match(/^http:\\/\\/snomed\\.info\\/sct\\/32506021000036107/)).map(entry => entry.resource.version.replace(/(^http:\\/\\/snomed\\.info\\/sct\\/32506021000036107\\/version\\/|\\/$)/gi, '')).sort();",
                  "                    const previousVersion = sctauVersions[0];",
                  "                    const latestVersion = sctauVersions[sctauVersions.length-1];",
                  "                    pm.environment.set('sctau.versions', sctauVersions);",
                  "                    pm.environment.set('sctau.versions.latest', latestVersion);",
                  "                    pm.environment.set('sctau.versions.previous', previousVersion);",
                  "                    return resolve(sctauVersions);",
                  "                } else {",
                  "                    console.error(err);",
                  "                    return;",
                  "                }",
                  "            });",
                  "        });",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "urlencoded",
              "urlencoded": [
                {
                  "key": "grant_type",
                  "value": "client_credentials",
                  "type": "text"
                },
                {
                  "key": "client_id",
                  "value": "{{auth.client_id}}",
                  "type": "text"
                },
                {
                  "key": "client_secret",
                  "value": "{{auth.client_secret}}",
                  "type": "text"
                }
              ]
            },
            "url": {
              "raw": "{{auth.url}}",
              "host": [
                "{{auth.url}}"
              ]
            },
            "description": "This example shows how to request a new Bearer token, by providing the client credentials as x-www-form-urlencoded parameters in the request body\n\nNOTE: Once the request has executed, the Bearer token is stored in an environment variable called \"auth.token\", for use in subsequent requests. If the \"fhir.url\" variable is pointed at the Integration API, this scenario then also queries the server and sets the \"sctau.versions.previous\" variable for use in subsequent examples"
          },
          "response": []
        }
      ],
      "description": "The following examples show how a client can authenticate with the NCTS"
    },
    {
      "name": "Syndication API Examples",
      "item": [
        {
          "name": "Syndication ATOM Feed (No Authentication)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Assert success",
                  "tests[\"Status code is 200\"] = responseCode.code === 200;",
                  "",
                  "// Assert Content-Type exists",
                  "var contentTypeHeaderExists = responseHeaders.hasOwnProperty(\"Content-Type\");",
                  "tests[\"Has Content-Type\"] = contentTypeHeaderExists;",
                  "",
                  "// Assert Content-Type matches one of the expected values",
                  "if (contentTypeHeaderExists) {",
                  "    var expectedContentTypes = [ ",
                  "        \"application/atom+xml\",",
                  "        \"application/xml\",",
                  "        \"text/xml\"",
                  "    ];",
                  "    var actualContentType = \"\" + responseHeaders[\"Content-Type\"];",
                  "    var passed = false;",
                  "    for (var i = 0; i < expectedContentTypes.length; i++) {",
                  "        var type = expectedContentTypes[i];",
                  "        if (actualContentType.toLowerCase().indexOf(type) >= 0) {",
                  "            passed = true;",
                  "            break;",
                  "        }",
                  "    }",
                  "    tests[\"Content-Type is one of [\" + expectedContentTypes + \"]\"] = passed;",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": ""
            },
            "url": {
              "raw": "{{synd.url}}",
              "host": [
                "{{synd.url}}"
              ]
            },
            "description": "This example shows how to request the Syndication ATOM feed\n\nNOTE: The Syndication ATOM feed is publically available and does not require the use of a Bearer token"
          },
          "response": []
        }
      ],
      "description": "The following examples demonstrate use of the Syndication feed"
    },
    {
      "name": "Integration API Examples",
      "item": [
        {
          "name": "ValueSet Expand",
          "event": [
            {
              "listen": "test",
              "script": {
                "id": "67773492-a313-4c5c-a750-1054cafb0415",
                "exec": [
                  "// Assert success",
                  "tests[\"Status code is 200\"] = responseCode.code === 200;",
                  "",
                  "// Assert Content-Type exists",
                  "var contentTypeHeaderExists = responseHeaders.hasOwnProperty(\"Content-Type\");",
                  "tests[\"Has Content-Type\"] = contentTypeHeaderExists;",
                  "",
                  "// Assert Content-Type matches one of the expected values",
                  "if (contentTypeHeaderExists) {",
                  "    var expectedContentTypes = [ ",
                  "        \"application/fhir+json\", ",
                  "        \"application/fhir+xml\", ",
                  "        \"application/json\", ",
                  "        \"application/xml\", ",
                  "        \"text/html\",",
                  "        \"text/xml\"  ",
                  "    ];",
                  "    var actualContentType = \"\" + responseHeaders[\"Content-Type\"];",
                  "    var passed = false;",
                  "    for (var i = 0; i < expectedContentTypes.length; i++) {",
                  "        var type = expectedContentTypes[i];",
                  "        if (actualContentType.toLowerCase().indexOf(type) >= 0) {",
                  "            passed = true;",
                  "            break;",
                  "        }",
                  "    }",
                  "    tests[\"Content-Type is one of [\" + expectedContentTypes + \"]\"] = passed;",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{auth.token}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": ""
            },
            "url": {
              "raw": "{{fhir.url}}/ValueSet/$expand?url=http%3A%2F%2Fsnomed.info%2Fsct%2F32506021000036107%3Ffhir_vs%3Drefset%2F32570611000036103",
              "host": [
                "{{fhir.url}}"
              ],
              "path": [
                "ValueSet",
                "$expand"
              ],
              "query": [
                {
                  "key": "url",
                  "value": "http%3A%2F%2Fsnomed.info%2Fsct%2F32506021000036107%3Ffhir_vs%3Drefset%2F32570611000036103"
                }
              ]
            },
            "description": "This example shows how to perform a ValueSet Expand on a simple SCTAU Reference Set, as an HTTP GET request\n\nNOTE: This request uses an environment variable called \"auth.token\", previously set in a \"Request Token\" example"
          },
          "response": []
        },
        {
          "name": "ValueSet Expand",
          "event": [
            {
              "listen": "test",
              "script": {
                "id": "4abb5345-0948-4171-aaa7-203d387c0d9b",
                "exec": [
                  "// Assert success",
                  "tests[\"Status code is 200\"] = responseCode.code === 200;",
                  "",
                  "// Assert Content-Type exists",
                  "var contentTypeHeaderExists = responseHeaders.hasOwnProperty(\"Content-Type\");",
                  "tests[\"Has Content-Type\"] = contentTypeHeaderExists;",
                  "",
                  "// Assert Content-Type matches one of the expected values",
                  "if (contentTypeHeaderExists) {",
                  "    var expectedContentTypes = [ ",
                  "        \"application/fhir+json\", ",
                  "        \"application/fhir+xml\", ",
                  "        \"application/json\", ",
                  "        \"application/xml\", ",
                  "        \"text/html\",",
                  "        \"text/xml\"  ",
                  "    ];",
                  "    var actualContentType = \"\" + responseHeaders[\"Content-Type\"];",
                  "    var passed = false;",
                  "    for (var i = 0; i < expectedContentTypes.length; i++) {",
                  "        var type = expectedContentTypes[i];",
                  "        if (actualContentType.toLowerCase().indexOf(type) >= 0) {",
                  "            passed = true;",
                  "            break;",
                  "        }",
                  "    }",
                  "    tests[\"Content-Type is one of [\" + expectedContentTypes + \"]\"] = passed;",
                  "}"
                ],
                "type": "text/javascript"
              }
            },
            {
              "listen": "prerequest",
              "script": {
                "id": "c023caa6-36c0-4a28-9434-6bfb866a5651",
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{auth.token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"resourceType\": \"Parameters\",\n  \"parameter\": [\n    {\n      \"name\": \"url\",\n      \"valueUri\": \"http://snomed.info/sct/32506021000036107?fhir_vs=refset/32570611000036103\"\n    }\n  ]\n}"
            },
            "url": {
              "raw": "{{fhir.url}}/ValueSet/$expand",
              "host": [
                "{{fhir.url}}"
              ],
              "path": [
                "ValueSet",
                "$expand"
              ]
            },
            "description": "This example shows how to perform a ValueSet Expand on a simple SCTAU Reference Set, as an HTTP POST request\n\nNOTE: This request uses an environment variable called \"auth.token\", previously set in a \"Request Token\" example"
          },
          "response": []
        },
        {
          "name": "Conformance (No Authentication)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Assert success",
                  "tests[\"Status code is 200\"] = responseCode.code === 200;",
                  "",
                  "// Assert Content-Type exists",
                  "var contentTypeHeaderExists = responseHeaders.hasOwnProperty(\"Content-Type\");",
                  "tests[\"Has Content-Type\"] = contentTypeHeaderExists;",
                  "",
                  "// Assert Content-Type matches one of the expected values",
                  "if (contentTypeHeaderExists) {",
                  "    var expectedContentTypes = [ ",
                  "        \"application/fhir+json\", ",
                  "        \"application/fhir+xml\", ",
                  "        \"application/json\", ",
                  "        \"application/xml\", ",
                  "        \"text/html\",",
                  "        \"text/xml\" ",
                  "    ];",
                  "    var actualContentType = \"\" + responseHeaders[\"Content-Type\"];",
                  "    var passed = false;",
                  "    for (var i = 0; i < expectedContentTypes.length; i++) {",
                  "        var type = expectedContentTypes[i];",
                  "        if (actualContentType.toLowerCase().indexOf(type) >= 0) {",
                  "            passed = true;",
                  "            break;",
                  "        }",
                  "    }",
                  "    tests[\"Content-Type is one of [\" + expectedContentTypes + \"]\"] = passed;",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": ""
            },
            "url": {
              "raw": "{{fhir.url}}/metadata",
              "host": [
                "{{fhir.url}}"
              ],
              "path": [
                "metadata"
              ]
            },
            "description": "This example shows how to request the FHIR Conformance resource\n\nNOTE: The conformance resource is publically available and does not require the use of a Bearer token"
          },
          "response": []
        },
        {
          "name": "Composed ValueSet Expand (Simple)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Assert success",
                  "tests[\"Status code is 200\"] = responseCode.code === 200;",
                  "",
                  "// Assert Content-Type exists",
                  "var contentTypeHeaderExists = responseHeaders.hasOwnProperty(\"Content-Type\");",
                  "tests[\"Has Content-Type\"] = contentTypeHeaderExists;",
                  "",
                  "// Assert Content-Type matches one of the expected values",
                  "if (contentTypeHeaderExists) {",
                  "    var expectedContentTypes = [ ",
                  "        \"application/fhir+json\", ",
                  "        \"application/fhir+xml\", ",
                  "        \"application/json\", ",
                  "        \"application/xml\", ",
                  "        \"text/html\",",
                  "        \"text/xml\"  ",
                  "    ];",
                  "    var actualContentType = \"\" + responseHeaders[\"Content-Type\"];",
                  "    var passed = false;",
                  "    for (var i = 0; i < expectedContentTypes.length; i++) {",
                  "        var type = expectedContentTypes[i];",
                  "        if (actualContentType.toLowerCase().indexOf(type) >= 0) {",
                  "            passed = true;",
                  "            break;",
                  "        }",
                  "    }",
                  "    tests[\"Content-Type is one of [\" + expectedContentTypes + \"]\"] = passed;",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{auth.token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/xml"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "<ValueSet xmlns=\"http://hl7.org/fhir\">\n   <compose>\n      <include>\n         <system value=\"http://snomed.info/sct\"/>\n         <version value=\"http://snomed.info/sct/32506021000036107/version/{{sctau.versions.previous}}\"/>\n         <concept>\n            <code value=\"116177003\"/>\n         </concept>\n         <concept>\n            <code value=\"418468008\"/>\n         </concept>\n      </include>\n   </compose>\n</ValueSet>"
            },
            "url": {
              "raw": "{{fhir.url}}/ValueSet/$expand",
              "host": [
                "{{fhir.url}}"
              ],
              "path": [
                "ValueSet",
                "$expand"
              ]
            },
            "description": "This example shows how to perform an Expand operation on a simple composed ValueSet, as an HTTP POST request\n\nNOTE: This request uses an environment variable called \"auth.token\", previously set in a \"Request Token\" example. The request also uses an environment variable called \"sctau.versions.previous\", previously set in a \"Request Token\" example (if \"fhir.url\" matches the Integration API)"
          },
          "response": []
        },
        {
          "name": "Composed ValueSet Expand (Complex)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Assert success",
                  "tests[\"Status code is 200\"] = responseCode.code === 200;",
                  "",
                  "// Assert Content-Type exists",
                  "var contentTypeHeaderExists = responseHeaders.hasOwnProperty(\"Content-Type\");",
                  "tests[\"Has Content-Type\"] = contentTypeHeaderExists;",
                  "",
                  "// Assert Content-Type matches one of the expected values",
                  "if (contentTypeHeaderExists) {",
                  "    var expectedContentTypes = [ ",
                  "        \"application/fhir+json\", ",
                  "        \"application/fhir+xml\", ",
                  "        \"application/json\", ",
                  "        \"application/xml\", ",
                  "        \"text/html\",",
                  "        \"text/xml\"  ",
                  "    ];",
                  "    var actualContentType = \"\" + responseHeaders[\"Content-Type\"];",
                  "    var passed = false;",
                  "    for (var i = 0; i < expectedContentTypes.length; i++) {",
                  "        var type = expectedContentTypes[i];",
                  "        if (actualContentType.toLowerCase().indexOf(type) >= 0) {",
                  "            passed = true;",
                  "            break;",
                  "        }",
                  "    }",
                  "    tests[\"Content-Type is one of [\" + expectedContentTypes + \"]\"] = passed;",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{auth.token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"resourceType\":\"ValueSet\",\n    \"compose\":{\n        \"include\":[\n        \t{\n        \t\t\"valueSet\": [\n                \t\"http://snomed.info/sct/32506021000036107?fhir_vs=refset/32570611000036103\"\n                ]\n        \t},\n            {\n                \"system\":\"http://snomed.info/sct\",\n                \"version\":\"http://snomed.info/sct/32506021000036107/version/{{sctau.versions.previous}}\",\n                \"filter\":[\n                    {\n                        \"property\":\"concept\",\n                        \"op\":\"is-a\",\n                        \"value\":\"11891009\"\n                    }\n                ]\n            },\n            {\n                \"system\":\"http://snomed.info/sct\",\n                \"version\":\"http://snomed.info/sct/32506021000036107/version/{{sctau.versions.previous}}\",\n                \"filter\":[\n                    {\n                        \"property\":\"concept\",\n                        \"op\":\"in\",\n                        \"value\":\"900000000000538005\"\n                    }\n                ]\n            }\n        ],\n        \"exclude\":[\n            {\n                \"system\":\"http://snomed.info/sct\",\n                \"version\":\"http://snomed.info/sct/32506021000036107/version/{{sctau.versions.previous}}\",\n                \"concept\":[\n                    {\n                        \"code\":\"24028007\"\n                    }\n                ]\n            }\n        ]\n    }\n}\n"
            },
            "url": {
              "raw": "{{fhir.url}}/ValueSet/$expand?_format=xml",
              "host": [
                "{{fhir.url}}"
              ],
              "path": [
                "ValueSet",
                "$expand"
              ],
              "query": [
                {
                  "key": "_format",
                  "value": "xml"
                }
              ]
            },
            "description": "This example shows how to perform an Expand operation on a complex composed ValueSet, as an HTTP POST request\n\nNOTE: This request uses an environment variable called \"auth.token\", previously set in a \"Request Token\" example. The request also uses an environment variable called \"sctau.versions.previous\", previously set in a \"Request Token\" example (if \"fhir.url\" matches the Integration API)"
          },
          "response": []
        },
        {
          "name": "Batch Operations",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Assert success",
                  "tests[\"Status code is 200\"] = responseCode.code === 200;",
                  "",
                  "// Assert Content-Type exists",
                  "var contentTypeHeaderExists = responseHeaders.hasOwnProperty(\"Content-Type\");",
                  "tests[\"Has Content-Type\"] = contentTypeHeaderExists;",
                  "",
                  "// Assert Content-Type matches one of the expected values",
                  "if (contentTypeHeaderExists) {",
                  "    var expectedContentTypes = [ ",
                  "        \"application/fhir+json\", ",
                  "        \"application/fhir+xml\", ",
                  "        \"application/json\", ",
                  "        \"application/xml\", ",
                  "        \"text/html\",",
                  "        \"text/xml\"  ",
                  "    ];",
                  "    var actualContentType = \"\" + responseHeaders[\"Content-Type\"];",
                  "    var passed = false;",
                  "    for (var i = 0; i < expectedContentTypes.length; i++) {",
                  "        var type = expectedContentTypes[i];",
                  "        if (actualContentType.toLowerCase().indexOf(type) >= 0) {",
                  "            passed = true;",
                  "            break;",
                  "        }",
                  "    }",
                  "    tests[\"Content-Type is one of [\" + expectedContentTypes + \"]\"] = passed;",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{auth.token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"type\": \"batch\",\n  \"resourceType\": \"Bundle\",\n  \"entry\": [\n    {\n      \"request\": {\n        \"method\": \"POST\",\n        \"url\": \"ValueSet/$expand\"\n      },\n      \"resource\": {\n        \"resourceType\": \"Parameters\",\n        \"parameter\": [\n          {\n            \"name\": \"identifier\",\n            \"valueUri\": \"http://snomed.info/sct/32506021000036107/version/{{sctau.versions.previous}}?fhir_vs=refset/929360051000036108\"\n          },\n          {\n            \"name\": \"count\",\n            \"valueInteger\": 10\n          }\n        ]\n      }\n    },\n    {\n      \"request\": {\n        \"method\": \"GET\",\n        \"url\": \"ValueSet/$expand?identifier=http%3A%2F%2Fsnomed.info%2Fsct%2F32506021000036107%2Fversion%2F{{sctau.versions.previous}}%3Ffhir_vs%3Drefset%2F929360081000036101\"\n      },\n      \"resource\": {\n        \"resourceType\": \"Parameters\",\n        \"parameter\": [\n          {\n            \"name\": \"count\",\n            \"valueInteger\": 10\n          }\n        ]\n      }\n    },\n    {\n      \"request\": {\n        \"method\": \"POST\",\n        \"url\": \"ValueSet/$expand\"\n      },\n      \"resource\": {\n        \"resourceType\": \"Parameters\",\n        \"parameter\": [\n          {\n            \"name\": \"identifier\",\n            \"valueUri\": \"http://snomed.info/sct/32506021000036107?fhir_vs=refset/929360061000036106\"\n          },\n          {\n            \"name\": \"count\",\n            \"valueInteger\": 10\n          }\n        ]\n      }\n    },\n    {\n      \"request\": {\n        \"method\": \"POST\",\n        \"url\": \"ValueSet/$expand\"\n      },\n      \"resource\": {\n        \"resourceType\": \"Parameters\",\n        \"parameter\": [\n          {\n            \"name\": \"identifier\",\n            \"valueUri\": \"http://snomed.info/sct/32506021000036107?fhir_vs=refset/929360071000036103\"\n          },\n          {\n            \"name\": \"count\",\n            \"valueInteger\": 10\n          }\n        ]\n      }\n    }\n  ]\n}"
            },
            "url": {
              "raw": "{{fhir.url}}",
              "host": [
                "{{fhir.url}}"
              ]
            },
            "description": "This example shows how to execute a Batch operation. To complete the example it includes several Batched operations. They are a combination of arbitrary ValueSet Expand requests, limited to 10 results each. The Batched operations include a GET, POSTS and also show Expand operations with, and without, an excplicit version\n\nNOTE: This request uses an environment variable called \"auth.token\", previously set in a \"Request Token\" example. The request also uses an environment variable called \"sctau.versions.previous\", previously set in a \"Request Token\" example (if \"fhir.url\" matches the Integration API)"
          },
          "response": []
        },
        {
          "name": "CodeSystem Lookup",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Assert success",
                  "tests[\"Status code is 200\"] = responseCode.code === 200;",
                  "",
                  "// Assert Content-Type exists",
                  "var contentTypeHeaderExists = responseHeaders.hasOwnProperty(\"Content-Type\");",
                  "tests[\"Has Content-Type\"] = contentTypeHeaderExists;",
                  "",
                  "// Assert Content-Type matches one of the expected values",
                  "if (contentTypeHeaderExists) {",
                  "    var expectedContentTypes = [ ",
                  "        \"application/fhir+json\", ",
                  "        \"application/fhir+xml\", ",
                  "        \"application/json\", ",
                  "        \"application/xml\", ",
                  "        \"text/html\",",
                  "        \"text/xml\"  ",
                  "    ];",
                  "    var actualContentType = \"\" + responseHeaders[\"Content-Type\"];",
                  "    var passed = false;",
                  "    for (var i = 0; i < expectedContentTypes.length; i++) {",
                  "        var type = expectedContentTypes[i];",
                  "        if (actualContentType.toLowerCase().indexOf(type) >= 0) {",
                  "            passed = true;",
                  "            break;",
                  "        }",
                  "    }",
                  "    tests[\"Content-Type is one of [\" + expectedContentTypes + \"]\"] = passed;",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{auth.token}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": ""
            },
            "url": {
              "raw": "{{fhir.url}}/CodeSystem/$lookup?code=71000036109&system=http://snomed.info/sct",
              "host": [
                "{{fhir.url}}"
              ],
              "path": [
                "CodeSystem",
                "$lookup"
              ],
              "query": [
                {
                  "key": "code",
                  "value": "71000036109"
                },
                {
                  "key": "system",
                  "value": "http://snomed.info/sct"
                }
              ]
            },
            "description": "This example shows how to perform a CodeSystem Lookup operation, as an HTTP GET request\n\nNOTE: This request uses an environment variable called \"auth.token\", previously set in a \"Request Token\" example"
          },
          "response": []
        },
        {
          "name": "CodeSystem Lookup",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Assert success",
                  "tests[\"Status code is 200\"] = responseCode.code === 200;",
                  "",
                  "// Assert Content-Type exists",
                  "var contentTypeHeaderExists = responseHeaders.hasOwnProperty(\"Content-Type\");",
                  "tests[\"Has Content-Type\"] = contentTypeHeaderExists;",
                  "",
                  "// Assert Content-Type matches one of the expected values",
                  "if (contentTypeHeaderExists) {",
                  "    var expectedContentTypes = [ ",
                  "        \"application/fhir+json\", ",
                  "        \"application/fhir+xml\", ",
                  "        \"application/json\", ",
                  "        \"application/xml\", ",
                  "        \"text/html\",",
                  "        \"text/xml\"  ",
                  "    ];",
                  "    var actualContentType = \"\" + responseHeaders[\"Content-Type\"];",
                  "    var passed = false;",
                  "    for (var i = 0; i < expectedContentTypes.length; i++) {",
                  "        var type = expectedContentTypes[i];",
                  "        if (actualContentType.toLowerCase().indexOf(type) >= 0) {",
                  "            passed = true;",
                  "            break;",
                  "        }",
                  "    }",
                  "    tests[\"Content-Type is one of [\" + expectedContentTypes + \"]\"] = passed;",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{auth.token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/xml"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "<Parameters xmlns=\"http://hl7.org/fhir\">\n   <parameter>\n      <name value=\"coding\"/>\n      <valueCoding>\n         <system value=\"http://snomed.info/sct\"/>\n         <code value=\"810311000168105\"/>\n      </valueCoding>\n   </parameter>\n</Parameters>"
            },
            "url": {
              "raw": "{{fhir.url}}/CodeSystem/$lookup",
              "host": [
                "{{fhir.url}}"
              ],
              "path": [
                "CodeSystem",
                "$lookup"
              ]
            },
            "description": "This example shows how to perform a CodeSystem Lookup operation, as an HTTP POST request\n\nNOTE: This request uses an environment variable called \"auth.token\", previously set in a \"Request Token\" example"
          },
          "response": []
        },
        {
          "name": "Filtering SCTAU Reference Sets",
          "event": [
            {
              "listen": "test",
              "script": {
                "id": "46c5be12-eb79-4021-b424-84a11b55518e",
                "exec": [
                  "// Assert success",
                  "tests[\"Status code is 200\"] = responseCode.code === 200;",
                  "",
                  "// Assert Content-Type exists",
                  "var contentTypeHeaderExists = responseHeaders.hasOwnProperty(\"Content-Type\");",
                  "tests[\"Has Content-Type\"] = contentTypeHeaderExists;",
                  "",
                  "// Assert Content-Type matches one of the expected values",
                  "if (contentTypeHeaderExists) {",
                  "    var expectedContentTypes = [ ",
                  "        \"application/fhir+json\", ",
                  "        \"application/fhir+xml\", ",
                  "        \"application/json\", ",
                  "        \"application/xml\", ",
                  "        \"text/html\",",
                  "        \"text/xml\"  ",
                  "    ];",
                  "    var actualContentType = \"\" + responseHeaders[\"Content-Type\"];",
                  "    var passed = false;",
                  "    for (var i = 0; i < expectedContentTypes.length; i++) {",
                  "        var type = expectedContentTypes[i];",
                  "        if (actualContentType.toLowerCase().indexOf(type) >= 0) {",
                  "            passed = true;",
                  "            break;",
                  "        }",
                  "    }",
                  "    tests[\"Content-Type is one of [\" + expectedContentTypes + \"]\"] = passed;",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{auth.token}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": ""
            },
            "url": {
              "raw": "{{fhir.url}}/ValueSet/$expand?url=http://snomed.info/sct?fhir_vs=refset/900000000000456007&filter=adv",
              "host": [
                "{{fhir.url}}"
              ],
              "path": [
                "ValueSet",
                "$expand"
              ],
              "query": [
                {
                  "key": "url",
                  "value": "http://snomed.info/sct?fhir_vs=refset/900000000000456007"
                },
                {
                  "key": "filter",
                  "value": "adv"
                }
              ]
            },
            "description": "This example uses the filter parameter, within a ValueSet Expand operation, as an HTTP GET request. It filters members of the SCTAU Reference Set Descriptor to provide a search mechanism for locating a particular Reference Set\n\nNOTE: This request uses an environment variable called \"auth.token\", previously set in a \"Request Token\" example"
          },
          "response": []
        },
        {
          "name": "CodeSystem Search (List All SCTAU Versions)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Assert success",
                  "tests[\"Status code is 200\"] = responseCode.code === 200;",
                  "",
                  "// Assert Content-Type exists",
                  "var contentTypeHeaderExists = responseHeaders.hasOwnProperty(\"Content-Type\");",
                  "tests[\"Has Content-Type\"] = contentTypeHeaderExists;",
                  "",
                  "// Assert Content-Type matches one of the expected values",
                  "if (contentTypeHeaderExists) {",
                  "    var expectedContentTypes = [ ",
                  "        \"application/fhir+json\", ",
                  "        \"application/fhir+xml\", ",
                  "        \"application/json\", ",
                  "        \"application/xml\", ",
                  "        \"text/html\",",
                  "        \"text/xml\"  ",
                  "    ];",
                  "    var actualContentType = \"\" + responseHeaders[\"Content-Type\"];",
                  "    var passed = false;",
                  "    for (var i = 0; i < expectedContentTypes.length; i++) {",
                  "        var type = expectedContentTypes[i];",
                  "        if (actualContentType.toLowerCase().indexOf(type) >= 0) {",
                  "            passed = true;",
                  "            break;",
                  "        }",
                  "    }",
                  "    tests[\"Content-Type is one of [\" + expectedContentTypes + \"]\"] = passed;",
                  "}",
                  "",
                  "// Query SCTAU versions from the search response",
                  "var searchResults = JSON.parse(responseBody);",
                  "var versions = [];",
                  "var entries = searchResults.entry;",
                  "for (var i = 0; entries !== undefined && i < entries.length; i++) {",
                  "    var resource = entries[i].resource;",
                  "    if (resource !== undefined &&",
                  "        resource.status !== undefined && resource.status === 'active' &&",
                  "        resource.version !== undefined && resource.version.match(\"http://snomed.info/sct/32506021000036107/version/\") !== null) {",
                  "        versions[versions.length] = parseInt(resource.version.replace(/^.*\\/([0-9]+)$/g, \"$1\"));",
                  "    }",
                  "}",
                  "if (versions.length > 0) {",
                  "    versions = versions.sort();",
                  "    postman.setEnvironmentVariable(\"sctau.versions.earliest\", versions[0]);",
                  "    postman.setEnvironmentVariable(\"sctau.versions.latest\", versions[versions.length-1]);",
                  "    postman.setEnvironmentVariable(\"sctau.versions\", versions);",
                  "}",
                  "",
                  "var EXPECTED_VERSIONS_COUNT = 6;",
                  "if (postman.getEnvironmentVariable(\"fhir.url\").match(\"(www|api)(\\.|\\.[a-z]+\\.)healthterminologies.gov.au\") !== null) {",
                  "    // Assert the NTS contains the correct number of SCTAU versions",
                  "    tests[\"Has the correct number of SCTAU versions (\" + EXPECTED_VERSIONS_COUNT + \")\"] = (versions.length === EXPECTED_VERSIONS_COUNT);    ",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{auth.token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/x-www-form-urlencoded"
              }
            ],
            "body": {
              "mode": "urlencoded",
              "urlencoded": [
                {
                  "key": "system",
                  "value": "http://snomed.info/sct",
                  "type": "text"
                }
              ]
            },
            "url": {
              "raw": "{{fhir.url}}/CodeSystem/_search",
              "host": [
                "{{fhir.url}}"
              ],
              "path": [
                "CodeSystem",
                "_search"
              ]
            },
            "description": "This example shows how to perform a CodeSystem Search operation, as an HTTP POST request\n\nNOTE: This request uses an environment variable called \"auth.token\", previously set in a \"Request Token\" example. If the \"fhir.url\" variable is pointed at the Integration API, this scenario then also generates \"sctau.versions\", \"sctau.versions.earliest\" and \"sctau.versions.latest\" environment variables for use in subsequent examples"
          },
          "response": []
        }
      ],
      "description": "The following examples are some simple scenarios that are commonly requested of the Integration API"
    },
    {
      "name": "Structure Definitions",
      "item": [
        {
          "name": "Complete Code System",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "var baseUrl = postman.getEnvironmentVariable('base.url');",
                  "if (baseUrl === undefined) {",
                  "    var fhirUrl = postman.getEnvironmentVariable('fhir.url');",
                  "    if (fhirUrl !== undefined) {",
                  "        baseUrl = fhirUrl.replace(/^(http|https):\\/\\/api\\./, '$1>>').replace(/\\/.*$/, '').replace(/>>/, '://');",
                  "        postman.setEnvironmentVariable('base.url', baseUrl);",
                  "    }",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": ""
            },
            "url": {
              "raw": "{{base.url}}/fhir/StructureDefinition/complete-code-system-2",
              "host": [
                "{{base.url}}"
              ],
              "path": [
                "fhir",
                "StructureDefinition",
                "complete-code-system-2"
              ]
            },
            "description": "This example shows where to find the StructureDefinition resource for a Complete CodeSystem"
          },
          "response": []
        },
        {
          "name": "Composed Value Set",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "var baseUrl = postman.getEnvironmentVariable('base.url');",
                  "if (baseUrl === undefined) {",
                  "    var fhirUrl = postman.getEnvironmentVariable('fhir.url');",
                  "    if (fhirUrl !== undefined) {",
                  "        baseUrl = fhirUrl.replace(/^(http|https):\\/\\/api\\./, '$1>>').replace(/\\/.*$/, '').replace(/>>/, '://');",
                  "        postman.setEnvironmentVariable('base.url', baseUrl);",
                  "    }",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": ""
            },
            "url": {
              "raw": "{{base.url}}/fhir/StructureDefinition/composed-value-set-2",
              "host": [
                "{{base.url}}"
              ],
              "path": [
                "fhir",
                "StructureDefinition",
                "composed-value-set-2"
              ]
            },
            "description": "This example shows where to find the StructureDefinition resource for a Composed ValueSet"
          },
          "response": []
        },
        {
          "name": "General Concept Map",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "var baseUrl = postman.getEnvironmentVariable('base.url');",
                  "if (baseUrl === undefined) {",
                  "    var fhirUrl = postman.getEnvironmentVariable('fhir.url');",
                  "    if (fhirUrl !== undefined) {",
                  "        baseUrl = fhirUrl.replace(/^(http|https):\\/\\/api\\./, '$1>>').replace(/\\/.*$/, '').replace(/>>/, '://');",
                  "        postman.setEnvironmentVariable('base.url', baseUrl);",
                  "    }",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": ""
            },
            "url": {
              "raw": "{{base.url}}/fhir/StructureDefinition/general-concept-map-2",
              "host": [
                "{{base.url}}"
              ],
              "path": [
                "fhir",
                "StructureDefinition",
                "general-concept-map-2"
              ]
            },
            "description": "This example shows where to find the StructureDefinition resource for a General ConceptMap"
          },
          "response": []
        },
        {
          "name": "Expanded Value Set",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "var baseUrl = postman.getEnvironmentVariable('base.url');",
                  "if (baseUrl === undefined) {",
                  "    var fhirUrl = postman.getEnvironmentVariable('fhir.url');",
                  "    if (fhirUrl !== undefined) {",
                  "        baseUrl = fhirUrl.replace(/^(http|https):\\/\\/api\\./, '$1>>').replace(/\\/.*$/, '').replace(/>>/, '://');",
                  "        postman.setEnvironmentVariable('base.url', baseUrl);",
                  "    }",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": ""
            },
            "url": {
              "raw": "{{base.url}}/fhir/StructureDefinition/expanded-value-set-2",
              "host": [
                "{{base.url}}"
              ],
              "path": [
                "fhir",
                "StructureDefinition",
                "expanded-value-set-2"
              ]
            },
            "description": "This example shows where to find the StructureDefinition resource for a Expanded ValueSet"
          },
          "response": []
        }
      ],
      "description": "The following examples provide links to the NCTS StructureDefinition resources"
    }
  ]
}