From 8cf483f7aed54aefb4b6b39e9da51569b6390e61 Mon Sep 17 00:00:00 2001 From: AdamChrimes Date: Wed, 6 Nov 2019 15:27:42 +0000 Subject: [PATCH 01/49] display the search bar and enable the search functionality --- app.js | 8 +- app/scripts/main.js | 2 +- app/views/includes/header.njk | 4 +- package-lock.json | 342 +++++++++------------------------- package.json | 1 - 5 files changed, 93 insertions(+), 264 deletions(-) diff --git a/app.js b/app.js index 7dd9b59f7..2d63e12e2 100755 --- a/app.js +++ b/app.js @@ -80,9 +80,8 @@ app.get('/service-manual/design-example/:example', (req, res) => { res.render(baseTemplate, { body: exampleHtml }); }); -/* app.get('/service-manual/search', (req, res) => { - var query = req.query['search-field'] || ''; + const query = req.query['search-field'] || ''; res.render('includes/search.njk', { results: pageIndex.search(query), query: query }); }); @@ -90,7 +89,6 @@ app.get('/service-manual/suggestions', (req, res) => { res.set({ 'Content-Type': 'application/json' }); res.send(JSON.stringify(pageIndex.search(req.query.search))); }); -*/ app.get('/', (req, res) => { res.redirect('/service-manual'); @@ -157,10 +155,8 @@ if (config.env === 'development') { app.listen(config.port); } -/* -setTimeout(function(){ +setTimeout(() => { pageIndex.init(); }, 2000); -*/ module.exports = app; diff --git a/app/scripts/main.js b/app/scripts/main.js index ab1772df2..4630706c9 100644 --- a/app/scripts/main.js +++ b/app/scripts/main.js @@ -3,7 +3,7 @@ import './polyfills'; // NHS.UK frontend import nhsuk_skipLink from '../../node_modules/nhsuk-frontend/packages/components/skip-link/skip-link'; /* eslint-disable-line camelcase */ -// import './search'; +import './search'; import DesignExample from './design-example'; // Initialise components diff --git a/app/views/includes/header.njk b/app/views/includes/header.njk index 0af0c8d7e..fabf1cc00 100755 --- a/app/views/includes/header.njk +++ b/app/views/includes/header.njk @@ -9,7 +9,7 @@ "longName": "true" }, "showNav": "false", - "showSearch": "false", + "showSearch": "true", "searchAction": "/service-manual/search/" }) }} @@ -22,7 +22,7 @@ "longName": "true" }, "showNav": "false", - "showSearch": "false", + "showSearch": "true", "searchAction": "/service-manual/search/" }) }} diff --git a/package-lock.json b/package-lock.json index 52a28587c..8f23d963b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1520,8 +1520,7 @@ "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "accepts": { "version": "1.3.7", @@ -1587,8 +1586,7 @@ "after": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", - "dev": true + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" }, "ajv": { "version": "6.10.0", @@ -1784,8 +1782,7 @@ "arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", - "dev": true + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" }, "asap": { "version": "2.0.6", @@ -1859,8 +1856,7 @@ "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" }, "async-each": { "version": "1.0.1", @@ -1870,8 +1866,7 @@ "async-each-series": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", - "integrity": "sha1-dhfBkXQB/Yykooqtzj266Yr+tDI=", - "dev": true + "integrity": "sha1-dhfBkXQB/Yykooqtzj266Yr+tDI=" }, "async-foreach": { "version": "0.1.3", @@ -1882,8 +1877,7 @@ "async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", - "dev": true + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" }, "asynckit": { "version": "0.4.0", @@ -2012,14 +2006,12 @@ "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "base": { "version": "0.11.2", @@ -2074,8 +2066,7 @@ "base64-arraybuffer": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", - "dev": true + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" }, "base64-js": { "version": "1.3.1", @@ -2086,8 +2077,7 @@ "base64id": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", - "dev": true + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" }, "basic-auth": { "version": "2.0.1", @@ -2107,8 +2097,7 @@ "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" }, "bcrypt-pbkdf": { "version": "1.0.2", @@ -2123,7 +2112,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true, "requires": { "callsite": "1.0.0" } @@ -2142,8 +2130,7 @@ "blob": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", - "dev": true + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" }, "block-stream": { "version": "0.0.9", @@ -2253,7 +2240,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2319,7 +2305,6 @@ "version": "2.26.7", "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.26.7.tgz", "integrity": "sha512-lY3emme0OyvA2ujEMpRmyRy9LY6gHLuTr2/ABxhIm3lADOiRXzP4dgekvnDrQqZ/Ec2Fz19lEjm6kglSG5766w==", - "dev": true, "requires": { "browser-sync-client": "^2.26.6", "browser-sync-ui": "^2.26.4", @@ -2356,14 +2341,12 @@ "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" }, "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -2374,14 +2357,12 @@ "mime": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" }, "send": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -2402,7 +2383,6 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -2413,32 +2393,27 @@ "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" }, "which-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" }, "window-size": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", - "dev": true + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=" }, "yargs": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.4.0.tgz", "integrity": "sha1-gW4ahm1VmMzzTlWW3c4i2S2kkNQ=", - "dev": true, "requires": { "camelcase": "^3.0.0", "cliui": "^3.2.0", @@ -2460,7 +2435,6 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "dev": true, "requires": { "camelcase": "^3.0.0" } @@ -2471,7 +2445,6 @@ "version": "2.26.6", "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.26.6.tgz", "integrity": "sha512-mGrkZdNzttKdf/16I+y+2dTQxoMCIpKbVIMJ/uP8ZpnKu9f9qa/2CYVtLtbjZG8nsM14EwiCrjuFTGBEnT3Gjw==", - "dev": true, "requires": { "etag": "1.8.1", "fresh": "0.5.2", @@ -2483,7 +2456,6 @@ "version": "5.5.12", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", - "dev": true, "requires": { "symbol-observable": "1.0.1" } @@ -2494,7 +2466,6 @@ "version": "2.26.4", "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.26.4.tgz", "integrity": "sha512-u20P3EsZoM8Pt+puoi3BU3KlbQAH1lAcV+/O4saF26qokrBqIDotmGonfWwoRbUmdxZkM9MBmA0K39ZTG1h4sA==", - "dev": true, "requires": { "async-each-series": "0.1.1", "connect-history-api-fallback": "^1", @@ -2597,14 +2568,12 @@ "bs-recipes": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", - "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=", - "dev": true + "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=" }, "bs-snippet-injector": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", - "integrity": "sha1-YbU5PxH1JVntEgaTEANDtu2wTdU=", - "dev": true + "integrity": "sha1-YbU5PxH1JVntEgaTEANDtu2wTdU=" }, "bser": { "version": "2.1.0", @@ -2641,8 +2610,7 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" }, "builtin-status-codes": { "version": "3.0.0", @@ -2757,8 +2725,7 @@ "callsite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" }, "callsites": { "version": "3.1.0", @@ -3004,8 +2971,7 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" }, "commondir": { "version": "1.0.1", @@ -3016,8 +2982,7 @@ "component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", - "dev": true + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" }, "component-emitter": { "version": "1.2.1", @@ -3027,8 +2992,7 @@ "component-inherit": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", - "dev": true + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" }, "compressible": { "version": "2.0.17", @@ -3067,8 +3031,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { "version": "1.6.2", @@ -3111,7 +3074,6 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", - "dev": true, "requires": { "ini": "^1.3.4", "proto-list": "~1.2.1" @@ -3141,7 +3103,6 @@ "version": "3.6.6", "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", - "dev": true, "requires": { "debug": "2.6.9", "finalhandler": "1.1.0", @@ -3153,7 +3114,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", - "dev": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.1", @@ -3167,16 +3127,14 @@ "statuses": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", - "dev": true + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" } } }, "connect-history-api-fallback": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" }, "console-browserify": { "version": "1.1.0", @@ -3746,8 +3704,7 @@ "dev-ip": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", - "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=", - "dev": true + "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=" }, "diff-sequences": { "version": "24.9.0", @@ -3858,7 +3815,6 @@ "version": "2.3.4", "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", - "dev": true, "requires": { "lodash": "^4.17.10" } @@ -3867,7 +3823,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.0.2.tgz", "integrity": "sha1-oyWqXlPROiIliJsqxBE7K5Y29Pw=", - "dev": true, "requires": { "tfunk": "^3.0.1" } @@ -3886,7 +3841,6 @@ "version": "0.15.3", "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", - "dev": true, "requires": { "commander": "^2.19.0", "lru-cache": "^4.1.5", @@ -3898,7 +3852,6 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, "requires": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" @@ -3907,8 +3860,7 @@ "semver": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" } } }, @@ -3979,7 +3931,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", - "dev": true, "requires": { "accepts": "~1.3.4", "base64id": "1.0.0", @@ -3992,14 +3943,12 @@ "cookie": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -4008,7 +3957,6 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "dev": true, "requires": { "async-limiter": "~1.0.0", "safe-buffer": "~5.1.0", @@ -4021,7 +3969,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.3.2.tgz", "integrity": "sha512-y0CPINnhMvPuwtqXfsGuWE8BB66+B6wTtCofQDRecMQPYX3MYUZXFNKDhdrSe3EVjgOu4V3rxdeqN/Tr91IgbQ==", - "dev": true, "requires": { "component-emitter": "1.2.1", "component-inherit": "0.0.3", @@ -4040,7 +3987,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -4051,7 +3997,6 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", - "dev": true, "requires": { "after": "0.8.2", "arraybuffer.slice": "~0.0.7", @@ -4089,7 +4034,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "requires": { "is-arrayish": "^0.2.1" } @@ -4198,8 +4142,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { "version": "1.12.0", @@ -4816,8 +4759,7 @@ "eventemitter3": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", - "dev": true + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=" }, "events": { "version": "3.0.0", @@ -5406,7 +5348,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", - "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^3.0.0", @@ -5437,8 +5378,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { "version": "1.2.4", @@ -6031,8 +5971,7 @@ "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" }, "get-stdin": { "version": "4.0.1", @@ -6064,7 +6003,6 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6295,7 +6233,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -6304,7 +6241,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "dev": true, "requires": { "isarray": "2.0.1" }, @@ -6312,16 +6248,14 @@ "isarray": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" } } }, "has-cors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" }, "has-flag": { "version": "3.0.0", @@ -6393,8 +6327,7 @@ "highlight.js": { "version": "9.15.10", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.10.tgz", - "integrity": "sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw==", - "dev": true + "integrity": "sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw==" }, "hmac-drbg": { "version": "1.0.1", @@ -6419,8 +6352,7 @@ "hosted-git-info": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" }, "html-encoding-sniffer": { "version": "1.0.2", @@ -6472,7 +6404,6 @@ "version": "1.15.2", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.15.2.tgz", "integrity": "sha1-ZC/cr/5S00SNK9o7AHnpQJBk2jE=", - "dev": true, "requires": { "eventemitter3": "1.x.x", "requires-port": "1.x.x" @@ -6536,8 +6467,7 @@ "immutable": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", - "dev": true + "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=" }, "import-fresh": { "version": "3.0.0", @@ -6589,8 +6519,7 @@ "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" }, "infer-owner": { "version": "1.0.4", @@ -6602,7 +6531,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -6616,8 +6544,7 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "inquirer": { "version": "6.4.1", @@ -6747,8 +6674,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "is-binary-path": { "version": "1.0.1", @@ -6767,7 +6693,6 @@ "version": "1.0.0", "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, "requires": { "builtin-modules": "^1.0.0" } @@ -6941,7 +6866,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", - "dev": true, "requires": { "lodash.isfinite": "^3.3.2" } @@ -7044,8 +6968,7 @@ "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" }, "is-windows": { "version": "1.0.2", @@ -7055,8 +6978,7 @@ "is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" }, "isarray": { "version": "1.0.0", @@ -8505,7 +8427,6 @@ "version": "1.10.2", "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.10.2.tgz", "integrity": "sha512-ZtBYyNUYJIsBWERnQP0rPN9KjkrDfJcMjuVGcvXOUJrD1zmOGwhRwQ4msG+HJ+Ni/FA7+sRQEMYVzdTQDvnzvQ==", - "dev": true, "requires": { "config-chain": "^1.1.12", "editorconfig": "^0.15.3", @@ -8518,7 +8439,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "dev": true, "requires": { "abbrev": "1", "osenv": "^0.1.4" @@ -8675,7 +8595,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", - "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -8763,14 +8682,12 @@ "limiter": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.4.tgz", - "integrity": "sha512-XCpr5bElgDI65vVgstP8TWjv6/QKWm9GU5UG0Pr5sLQ3QLo8NVKsioe+Jed5/3vFOe3IQuqE7DKwTvKQkjTHvg==", - "dev": true + "integrity": "sha512-XCpr5bElgDI65vVgstP8TWjv6/QKWm9GU5UG0Pr5sLQ3QLo8NVKsioe+Jed5/3vFOe3IQuqE7DKwTvKQkjTHvg==" }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", @@ -8783,7 +8700,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, "requires": { "error-ex": "^1.2.0" } @@ -8791,8 +8707,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" } } }, @@ -8828,7 +8743,6 @@ "version": "1.9.2", "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-1.9.2.tgz", "integrity": "sha512-NEKF7bDJE9U3xzJu3kbayF0WTvng6Pww7tzqNb/XtEARYwqw7CKEX7BvOMg98FtE9es2CRizl61gkV3hS8dqYg==", - "dev": true, "requires": { "axios": "0.19.0", "debug": "4.1.1", @@ -8839,14 +8753,12 @@ "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, "requires": { "ms": "^2.1.1" } @@ -8854,20 +8766,17 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "which-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" }, "yargs": { "version": "6.6.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true, "requires": { "camelcase": "^3.0.0", "cliui": "^3.2.0", @@ -8888,7 +8797,6 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "dev": true, "requires": { "camelcase": "^3.0.0" } @@ -8924,8 +8832,7 @@ "lodash.isfinite": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=", - "dev": true + "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=" }, "lodash.kebabcase": { "version": "4.1.1", @@ -9200,7 +9107,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -9265,8 +9171,7 @@ "mitt": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.1.3.tgz", - "integrity": "sha512-mUDCnVNsAi+eD6qA0HkRkwYczbLHJ49z17BGe2PYRhZL4wpZUFZGJHU7/5tmvohoma+Hdn0Vh/oJTiPEmgSruA==", - "dev": true + "integrity": "sha512-mUDCnVNsAi+eD6qA0HkRkwYczbLHJ49z17BGe2PYRhZL4wpZUFZGJHU7/5tmvohoma+Hdn0Vh/oJTiPEmgSruA==" }, "mixin-deep": { "version": "1.3.2", @@ -9291,7 +9196,6 @@ "version": "0.5.1", "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, "requires": { "minimist": "0.0.8" }, @@ -9299,8 +9203,7 @@ "minimist": { "version": "0.0.8", "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } }, @@ -10228,7 +10131,6 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, "requires": { "hosted-git-info": "^2.1.4", "is-builtin-module": "^1.0.0", @@ -10326,8 +10228,7 @@ "object-component": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", - "dev": true + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" }, "object-copy": { "version": "0.1.0", @@ -10366,8 +10267,7 @@ "object-path": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", - "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=", - "dev": true + "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=" }, "object-visit": { "version": "1.0.1", @@ -10458,7 +10358,6 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "dev": true, "requires": { "wrappy": "1" } @@ -10475,14 +10374,12 @@ "openurl": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=", - "dev": true + "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=" }, "opn": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "dev": true, "requires": { "is-wsl": "^1.1.0" } @@ -10534,8 +10431,7 @@ "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, "os-locale": { "version": "1.4.0", @@ -10548,14 +10444,12 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "osenv": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -10727,7 +10621,6 @@ "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dev": true, "requires": { "better-assert": "~1.0.0" } @@ -10736,7 +10629,6 @@ "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "dev": true, "requires": { "better-assert": "~1.0.0" } @@ -10809,7 +10701,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, "requires": { "graceful-fs": "^4.1.2", "pify": "^2.0.0", @@ -10819,8 +10710,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" } } }, @@ -10852,14 +10742,12 @@ "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, "requires": { "pinkie": "^2.0.0" } @@ -10898,7 +10786,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.1.1.tgz", "integrity": "sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y=", - "dev": true, "requires": { "async": "1.5.2", "is-number-like": "^1.0.3" @@ -10994,8 +10881,7 @@ "proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", - "dev": true + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" }, "proxy-addr": { "version": "2.0.5", @@ -11015,8 +10901,7 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "psl": { "version": "1.1.33", @@ -11094,8 +10979,7 @@ "qs": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", - "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", - "dev": true + "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=" }, "querystring": { "version": "0.2.0", @@ -11202,7 +11086,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, "requires": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" @@ -11212,7 +11095,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, "requires": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" @@ -11222,7 +11104,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, "requires": { "pinkie-promise": "^2.0.0" } @@ -11231,7 +11112,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, "requires": { "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", @@ -11501,14 +11381,12 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, "require-uncached": { "version": "1.0.3", @@ -11531,8 +11409,7 @@ "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, "resolve": { "version": "1.11.1", @@ -11598,7 +11475,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=", - "dev": true, "requires": { "debug": "^2.2.0", "minimatch": "^3.0.2" @@ -11665,8 +11541,7 @@ "rx": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", - "dev": true + "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=" }, "rx-lite": { "version": "3.1.2", @@ -12149,8 +12024,7 @@ "semver": { "version": "5.5.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", - "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", - "dev": true + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==" }, "semver-diff": { "version": "2.1.0", @@ -12198,7 +12072,6 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, "requires": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -12213,7 +12086,6 @@ "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -12224,8 +12096,7 @@ "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" } } }, @@ -12243,14 +12114,12 @@ "server-destroy": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=", - "dev": true + "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=" }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "set-value": { "version": "2.0.1", @@ -12336,8 +12205,7 @@ "sigmund": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" }, "signal-exit": { "version": "3.0.2", @@ -12477,7 +12345,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", - "dev": true, "requires": { "debug": "~3.1.0", "engine.io": "~3.2.0", @@ -12491,7 +12358,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -12500,7 +12366,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", - "dev": true, "requires": { "component-emitter": "1.2.1", "component-inherit": "0.0.3", @@ -12518,14 +12383,12 @@ "isarray": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" }, "socket.io-client": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", - "dev": true, "requires": { "backo2": "1.0.2", "base64-arraybuffer": "0.1.5", @@ -12547,7 +12410,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", - "dev": true, "requires": { "component-emitter": "1.2.1", "debug": "~3.1.0", @@ -12558,7 +12420,6 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "dev": true, "requires": { "async-limiter": "~1.0.0", "safe-buffer": "~5.1.0", @@ -12570,14 +12431,12 @@ "socket.io-adapter": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", - "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", - "dev": true + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" }, "socket.io-client": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz", "integrity": "sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA==", - "dev": true, "requires": { "backo2": "1.0.2", "base64-arraybuffer": "0.1.5", @@ -12599,7 +12458,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -12610,7 +12468,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", - "dev": true, "requires": { "component-emitter": "1.2.1", "debug": "~3.1.0", @@ -12621,7 +12478,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -12629,8 +12485,7 @@ "isarray": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" } } }, @@ -12690,7 +12545,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", - "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -12699,14 +12553,12 @@ "spdx-exceptions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" }, "spdx-expression-parse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -12715,8 +12567,7 @@ "spdx-license-ids": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", - "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==", - "dev": true + "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==" }, "split-string": { "version": "3.1.0", @@ -12846,7 +12697,6 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", "integrity": "sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM=", - "dev": true, "requires": { "commander": "^2.2.0", "limiter": "^1.0.5" @@ -12909,7 +12759,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, "requires": { "is-utf8": "^0.2.0" } @@ -12964,8 +12813,7 @@ "symbol-observable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", - "dev": true + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" }, "symbol-tree": { "version": "3.2.4", @@ -13201,7 +13049,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-3.1.0.tgz", "integrity": "sha1-OORBT8ZJd9h6/apy+sttKfgve1s=", - "dev": true, "requires": { "chalk": "^1.1.1", "object-path": "^0.9.0" @@ -13210,14 +13057,12 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", @@ -13229,8 +13074,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, @@ -13289,8 +13133,7 @@ "to-array": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", - "dev": true + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" }, "to-arraybuffer": { "version": "1.0.1", @@ -13481,8 +13324,7 @@ "ua-parser-js": { "version": "0.7.17", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", - "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==", - "dev": true + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" }, "uglify-js": { "version": "3.6.0", @@ -13514,8 +13356,7 @@ "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", - "dev": true + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" }, "undefsafe": { "version": "2.0.2", @@ -13595,8 +13436,7 @@ "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" }, "unpipe": { "version": "1.0.0", @@ -13767,7 +13607,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, "requires": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -14222,8 +14061,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write": { "version": "1.0.3", @@ -14249,7 +14087,6 @@ "version": "6.1.4", "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", - "dev": true, "requires": { "async-limiter": "~1.0.0" } @@ -14269,8 +14106,7 @@ "xmlhttprequest-ssl": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", - "dev": true + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" }, "xtend": { "version": "4.0.1", @@ -14286,8 +14122,7 @@ "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, "yargs": { "version": "12.0.5", @@ -14400,8 +14235,7 @@ "yeast": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", - "dev": true + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" } } } diff --git a/package.json b/package.json index c6ec1c1d1..dab93f7f0 100755 --- a/package.json +++ b/package.json @@ -54,7 +54,6 @@ "eslint-plugin-import": "^2.18.2", "iframe-resizer": "^3.6.6", "jest": "^24.9.0", - "nhsuk-frontend": "^2.3.2", "node-sass": "^4.12.0", "nodemon": "^1.19.4", From 1a0ddd9d3fae173d87aa92e9b2d48bf334ff8c5f Mon Sep 17 00:00:00 2001 From: Tom Doughty Date: Wed, 27 Nov 2019 12:04:25 +0000 Subject: [PATCH 02/49] Use autocomplete from library 3.x --- app.js | 21 ++++++++------------- app/scripts/main.js | 13 +++++++++++++ app/scripts/search.js | 28 ++++++++++++++++++++++++++++ app/views/includes/header.njk | 10 ++++++---- app/views/sitemap.njk | 2 +- 5 files changed, 56 insertions(+), 18 deletions(-) create mode 100644 app/scripts/search.js diff --git a/app.js b/app.js index 7dd9b59f7..8078b5d24 100755 --- a/app.js +++ b/app.js @@ -16,7 +16,7 @@ const locals = require('./app/locals'); const routing = require('./middleware/routing.js'); const PageIndex = require('./middleware/page-index.js'); -var pageIndex = new PageIndex(config); +const pageIndex = new PageIndex(config); // Initialise applications const app = express(); @@ -65,7 +65,7 @@ env.addFilter('highlight', (code, language) => { // Render standalone design examples app.get('/service-manual/design-example/:example', (req, res) => { - const displayFullPage = req.query.fullpage === "true"; + const displayFullPage = req.query.fullpage === 'true'; const example = req.params.example; const examplePath = path.join(__dirname, `/app/components/${example}.njk`); @@ -73,24 +73,21 @@ app.get('/service-manual/design-example/:example', (req, res) => { const exampleHtml = fileHelper.getHTMLCode(examplePath); // Wrap the example HTML in a basic html base template. - var baseTemplate = 'includes/design-example-wrapper.njk'; - if(displayFullPage) { - baseTemplate = 'includes/design-example-wrapper-full.njk'; - } + const baseTemplate = displayFullPage + ? 'includes/design-example-wrapper.njk' + : 'includes/design-example-wrapper-full.njk'; res.render(baseTemplate, { body: exampleHtml }); }); -/* app.get('/service-manual/search', (req, res) => { - var query = req.query['search-field'] || ''; - res.render('includes/search.njk', { results: pageIndex.search(query), query: query }); + const query = req.query['search-field'] || ''; + res.render('includes/search.njk', { query, results: pageIndex.search(query) }); }); app.get('/service-manual/suggestions', (req, res) => { res.set({ 'Content-Type': 'application/json' }); res.send(JSON.stringify(pageIndex.search(req.query.search))); }); -*/ app.get('/', (req, res) => { res.redirect('/service-manual'); @@ -157,10 +154,8 @@ if (config.env === 'development') { app.listen(config.port); } -/* -setTimeout(function(){ +setTimeout(() => { pageIndex.init(); }, 2000); -*/ module.exports = app; diff --git a/app/scripts/main.js b/app/scripts/main.js index 48f348745..d822910da 100644 --- a/app/scripts/main.js +++ b/app/scripts/main.js @@ -2,8 +2,10 @@ import './polyfills'; // NHS.UK frontend +import AutoComplete from 'nhsuk-frontend/packages/components/header/autoCompleteConfig'; import SkipLink from '../../node_modules/nhsuk-frontend/packages/components/skip-link/skip-link'; import DesignExample from './design-example'; +import { source, suggestion } from './search'; // Initialise components SkipLink(); @@ -11,3 +13,14 @@ SkipLink(); document.querySelectorAll(DesignExample.selector()).forEach((el) => { new DesignExample(el); }); + +// Header autocomplete +AutoComplete({ + containerId: 'autocomplete-container', + formId: 'search', + inputId: 'search-field', + source, + templates: { + suggestion, + }, +}); diff --git a/app/scripts/search.js b/app/scripts/search.js new file mode 100644 index 000000000..7033195cc --- /dev/null +++ b/app/scripts/search.js @@ -0,0 +1,28 @@ +/** + * Function to build truncated result with svg for search autocomplete + * @param {string} result String containing individual result from autocomplete source function + * @returns {string} String of HTML containing passed result +*/ +export const suggestion = result => ` + + ${result} +`; + +/** + * Function to populate the search autocomplete. + * @param {string} query Query to pass to search API + * @param {function} populateResults Callback function passed to source by autocomplete plugin +*/ +export const source = (query, populateResults) => { + // Build URL for search endpoint + const url = `/service-manual/suggestions/?search=${query}`; + const xhr = new XMLHttpRequest(); + xhr.open('GET', url); + xhr.onload = () => { + if (xhr.status === 200) { + const json = JSON.parse(xhr.responseText); + populateResults(json.map(({ title }) => title)); + } + }; + xhr.send(); +}; diff --git a/app/views/includes/header.njk b/app/views/includes/header.njk index 0af0c8d7e..b57499fff 100755 --- a/app/views/includes/header.njk +++ b/app/views/includes/header.njk @@ -9,8 +9,9 @@ "longName": "true" }, "showNav": "false", - "showSearch": "false", - "searchAction": "/service-manual/search/" + "showSearch": "true", + "searchAction": "/service-manual/search/", + "searchInputName": "search-field" }) }} {% else %} @@ -22,8 +23,9 @@ "longName": "true" }, "showNav": "false", - "showSearch": "false", - "searchAction": "/service-manual/search/" + "showSearch": "true", + "searchAction": "/service-manual/search/", + "searchInputName": "search-field" }) }} {% endif %} diff --git a/app/views/sitemap.njk b/app/views/sitemap.njk index d12d5b5ca..e7e7532d2 100644 --- a/app/views/sitemap.njk +++ b/app/views/sitemap.njk @@ -95,7 +95,7 @@
  • Numbers, measurements, dates and time
  • Formatting and punctuation
  • -
  • Links and PDFs
  • + {#
  • Links and PDFs
  • #}
  • From 2e0b028a91da2814552f38bebc1866c1c935683c Mon Sep 17 00:00:00 2001 From: Sabeeh UL-Hassan Date: Wed, 27 Nov 2019 13:09:13 +0000 Subject: [PATCH 03/49] Fix space and limit results to 10 --- app.js | 3 ++- middleware/page-index.js | 24 ++++++++++++------------ 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/app.js b/app.js index 8078b5d24..f31a9a0af 100755 --- a/app.js +++ b/app.js @@ -86,7 +86,8 @@ app.get('/service-manual/search', (req, res) => { app.get('/service-manual/suggestions', (req, res) => { res.set({ 'Content-Type': 'application/json' }); - res.send(JSON.stringify(pageIndex.search(req.query.search))); + resultsLimit = (pageIndex.search(req.query.search)) + res.send(JSON.stringify(resultsLimit.slice(0,10))); }); app.get('/', (req, res) => { diff --git a/middleware/page-index.js b/middleware/page-index.js index 17a70dd22..ee18210c0 100644 --- a/middleware/page-index.js +++ b/middleware/page-index.js @@ -88,19 +88,19 @@ class PageIndex { var results = [] if (query && this.index) { results = this.index.query(function(q) { - const exactMatch = query.toLowerCase() - const partialMatch = query.toLowerCase() + "*" - - q.term(exactMatch, { fields: [ 'title' ], boost: 100 }) - q.term(exactMatch, { fields: [ 'h2' ], boost: 80 }) - q.term(exactMatch, { fields: [ 'h3' ], boost: 60 }) - q.term(exactMatch, { fields: [ 'extra' ], boost: 40 }) - - q.term(partialMatch, { fields: [ 'title' ], boost: 90 }) - q.term(partialMatch, { fields: [ 'h2' ], boost: 70 }) - q.term(partialMatch, { fields: [ 'h3' ], boost: 50 }) - q.term(partialMatch, { fields: [ 'extra' ], boost: 30 }) + lunr.tokenizer(query).forEach(function (token) { + q.term(token.toString(), { fields: [ 'title' ], boost: 100 }) + q.term(token.toString(), { fields: [ 'h2' ], boost: 80 }) + q.term(token.toString(), { fields: [ 'h3' ], boost: 60 }) + q.term(token.toString(), { fields: [ 'extra' ], boost: 40 }) + + + q.term(`${token.toString()}*`, { fields: [ 'title' ], boost: 90 }) + q.term(`${token.toString()}*`, { fields: [ 'h2' ], boost: 70 }) + q.term(`${token.toString()}*`, { fields: [ 'h3' ], boost: 50 }) + q.term(`${token.toString()}*`, { fields: [ 'extra' ], boost: 30 }) }) + }) } return results } From e099789817c728b9cca166b4b2aee8b5fcd3bf1d Mon Sep 17 00:00:00 2001 From: Sabeeh UL-Hassan Date: Wed, 27 Nov 2019 13:54:11 +0000 Subject: [PATCH 04/49] Add search counter and pagination --- app.js | 15 ++++++++++++- app/scripts/search.js | 2 +- app/views/includes/search.njk | 41 +++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/app.js b/app.js index f31a9a0af..70febb10c 100755 --- a/app.js +++ b/app.js @@ -81,7 +81,20 @@ app.get('/service-manual/design-example/:example', (req, res) => { app.get('/service-manual/search', (req, res) => { const query = req.query['search-field'] || ''; - res.render('includes/search.njk', { query, results: pageIndex.search(query) }); + var resultsPerPage = 10; + var currentPage = parseInt(req.query['page']); + var results = pageIndex.search(query); + var maxPage = Math.ceil(results.length / resultsPerPage); + if (!Number.isInteger(currentPage)){ + currentPage = 1 + } else if(currentPage > maxPage || currentPage < 1){ + currentPage = 1 + } + + var startingIndex = resultsPerPage * (currentPage - 1) + var endingIndex = startingIndex + resultsPerPage + + res.render('includes/search.njk', { results: results.slice(startingIndex, endingIndex), resultsLen: results.length, query: query, currentPage: currentPage, maxPage: maxPage,}); }); app.get('/service-manual/suggestions', (req, res) => { diff --git a/app/scripts/search.js b/app/scripts/search.js index 7033195cc..7a5b4cceb 100644 --- a/app/scripts/search.js +++ b/app/scripts/search.js @@ -21,7 +21,7 @@ export const source = (query, populateResults) => { xhr.onload = () => { if (xhr.status === 200) { const json = JSON.parse(xhr.responseText); - populateResults(json.map(({ title }) => title)); + populateResults(json.map(({ title }) => title).filter(Boolean)); } }; xhr.send(); diff --git a/app/views/includes/search.njk b/app/views/includes/search.njk index b4a0991ff..72376a37d 100644 --- a/app/views/includes/search.njk +++ b/app/views/includes/search.njk @@ -22,6 +22,10 @@
    +

    + Found {{ resultsLen }} matching results. +

    + {% if results | length > 0 %}
      {% for item in results %} @@ -31,6 +35,43 @@ {% endfor %}
    + {% else %} {% if query != "" %}

    Your search - {{query}} - had no matching results.

    From 721a9e7f039e7147917a5c36d268ea27b51783e6 Mon Sep 17 00:00:00 2001 From: Jack Matthams Date: Fri, 29 Nov 2019 12:19:51 +0000 Subject: [PATCH 05/49] add full sentence bullet list to formatting page and medicine and food pipe to A to z --- .../content/a-to-z-of-nhs-health-writing.njk | 4 ++++ app/views/content/formatting-and-punctuation.njk | 15 ++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/views/content/a-to-z-of-nhs-health-writing.njk b/app/views/content/a-to-z-of-nhs-health-writing.njk index addeb8877..da662e485 100644 --- a/app/views/content/a-to-z-of-nhs-health-writing.njk +++ b/app/views/content/a-to-z-of-nhs-health-writing.njk @@ -318,6 +318,8 @@

    For the annual flu vaccination programme, we use the term "flu vaccine" as that covers children and adults.

    foetus

    We do not commonly use "foetus", except in the names of conditions like "foetal alcohol syndrome". We prefer "baby".

    +

    food pipe

    +

    We use "food pipe", not "gullet".

    foot and mouth disease

    Lower case.

    formula

    @@ -436,6 +438,8 @@

    We prefer "health record".

    medication

    We use "medicine".

    +

    medicine

    +

    We use "medicine", not "medication".

    metric measurements

    See the guidance on metric and imperial measurements on the Numbers, measurements, dates and time page.

    microgram

    diff --git a/app/views/content/formatting-and-punctuation.njk b/app/views/content/formatting-and-punctuation.njk index d7d92ce00..577b45611 100644 --- a/app/views/content/formatting-and-punctuation.njk +++ b/app/views/content/formatting-and-punctuation.njk @@ -101,6 +101,8 @@

    Lists

    Use lists to make text easier to read.​

    Bulleted lists should be short and snappy. If possible, limit your list to no more than 6 items.​ Each item in the list should be roughly the same length.

    +

    We use bullet points in care cards and Do and Don’t lists.

    +

    Lead-in lists

    Use a lead-in line with a colon. The bullets should make sense running on from the lead-in line. In effect, the list is 1 continuous sentence.

    Example:

    "A pharmacist can recommend:

    @@ -112,7 +114,18 @@

    Each bullet point starts lower case and has no punctuation at the end, including after the last point.

    Do not include more than 1 sentence at each bullet point.

    Avoid ending a bullet point with "and" and "or". Use the lead-in to let people know the options.

    -

    We also use bullet points in care cards and Do and Don’t lists.

    +

    Full sentence lists

    +

    If your user research shows that it helps your users, you can use full sentence bullet points. For example, our medicines information uses full sentence bullet points for key facts:

    +

    Example:

    +

    "Key facts:

    +
      +
    1. Paracetamol takes up to an hour to work.
    2. +
    3. The usual dose of paracetamol is one or two 500mg tablets at a time.
    4. +
    5. Do not take paracetamol with other medicines containing paracetamol.
    6. +
    7. Paracetamol is safe to take in pregnancy and while breastfeeding, at recommended doses.
    8. +
    9. Brand names include Disprol, Hedex, Medinol and Panadol.
    10. +
    +

    Each bullet point should be distinct information, start with a capital letter and end with a full stop. There should be no lead in line."

    Numbered lists

    We use numbered lists instead of bulleted ones to guide people through a process. ​ Each point starts with a capital letter and ends with a full stop, without a lead-in line.

    Example:

    From e8d3bc7692c6c80ea5f126a2c171f6a649bdcf71 Mon Sep 17 00:00:00 2001 From: Tom Doughty Date: Mon, 2 Dec 2019 11:47:41 +0000 Subject: [PATCH 06/49] Add search functionality --- app.js | 53 ++++--- app/scripts/main.js | 9 +- app/scripts/search.js | 21 ++- middleware/file-helper.js | 48 +++--- middleware/page-index-additions.js | 11 +- middleware/page-index.js | 242 ++++++++++++++--------------- 6 files changed, 203 insertions(+), 181 deletions(-) diff --git a/app.js b/app.js index 70febb10c..de0c83521 100755 --- a/app.js +++ b/app.js @@ -81,51 +81,58 @@ app.get('/service-manual/design-example/:example', (req, res) => { app.get('/service-manual/search', (req, res) => { const query = req.query['search-field'] || ''; - var resultsPerPage = 10; - var currentPage = parseInt(req.query['page']); - var results = pageIndex.search(query); - var maxPage = Math.ceil(results.length / resultsPerPage); - if (!Number.isInteger(currentPage)){ - currentPage = 1 - } else if(currentPage > maxPage || currentPage < 1){ - currentPage = 1 + const resultsPerPage = 10; + let currentPage = parseInt(req.query.page, 10); + const results = pageIndex.search(query); + const maxPage = Math.ceil(results.length / resultsPerPage); + if (!Number.isInteger(currentPage)) { + currentPage = 1; + } else if (currentPage > maxPage || currentPage < 1) { + currentPage = 1; } - var startingIndex = resultsPerPage * (currentPage - 1) - var endingIndex = startingIndex + resultsPerPage - - res.render('includes/search.njk', { results: results.slice(startingIndex, endingIndex), resultsLen: results.length, query: query, currentPage: currentPage, maxPage: maxPage,}); + const startingIndex = resultsPerPage * (currentPage - 1); + const endingIndex = startingIndex + resultsPerPage; + + res.render('includes/search.njk', { + currentPage, + maxPage, + query, + results: results.slice(startingIndex, endingIndex), + resultsLen: results.length, + }); }); app.get('/service-manual/suggestions', (req, res) => { + const results = pageIndex.search(req.query.search); + const slicedResults = results.slice(0, 10); res.set({ 'Content-Type': 'application/json' }); - resultsLimit = (pageIndex.search(req.query.search)) - res.send(JSON.stringify(resultsLimit.slice(0,10))); + res.send(JSON.stringify(slicedResults)); }); -app.get('/', (req, res) => { +app.get('/', (_, res) => { res.redirect('/service-manual'); }); // The practices pages have moved or been deleted // Temporary redirects incase anyone still visits /practices pages -app.get('/service-manual/practices/create-content-for-users-with-low-health-literacy', (req, res) => { +app.get('/service-manual/practices/create-content-for-users-with-low-health-literacy', (_, res) => { res.redirect('/service-manual/content/health-literacy'); }); -app.get('/service-manual/practices/create-content-for-users-with-low-health-literacy/use-a-readability-tool-to-prioritise-content', (req, res) => { +app.get('/service-manual/practices/create-content-for-users-with-low-health-literacy/use-a-readability-tool-to-prioritise-content', (_, res) => { res.redirect('/service-manual/content/health-literacy/use-a-readability-tool-to-prioritise-content'); }); -app.get('/service-manual/practices', (req, res) => { +app.get('/service-manual/practices', (_, res) => { res.redirect('/service-manual'); }); -app.get('/service-manual/practices/make-your-service-accessible', (req, res) => { +app.get('/service-manual/practices/make-your-service-accessible', (_, res) => { res.redirect('/service-manual/accessibility'); }); -app.get('/service-manual/content/writing-for-accessibility', (req, res) => { +app.get('/service-manual/content/writing-for-accessibility', (_, res) => { res.redirect('/service-manual/accessibility/content'); }); @@ -135,19 +142,19 @@ app.get(/^([^.]+)$/, (req, res, next) => { }); // Render sitemap.xml in XML format -app.get('/service-manual/sitemap.xml', (req, res) => { +app.get('/service-manual/sitemap.xml', (_, res) => { res.set({ 'Content-Type': 'application/xml' }); res.render('sitemap.xml'); }); // Render robots.txt in text format -app.get('/service-manual/robots.txt', (req, res) => { +app.get('/service-manual/robots.txt', (_, res) => { res.set('text/plain'); res.render('robots.txt'); }); // Render 404 page -app.get('*', (req, res) => { +app.get('*', (_, res) => { res.statusCode = 404; res.render('page-not-found'); }); diff --git a/app/scripts/main.js b/app/scripts/main.js index d822910da..e8b18c0dd 100644 --- a/app/scripts/main.js +++ b/app/scripts/main.js @@ -5,7 +5,12 @@ import './polyfills'; import AutoComplete from 'nhsuk-frontend/packages/components/header/autoCompleteConfig'; import SkipLink from '../../node_modules/nhsuk-frontend/packages/components/skip-link/skip-link'; import DesignExample from './design-example'; -import { source, suggestion } from './search'; +import { + inputValue, + onConfirm, + source, + suggestion, +} from './search'; // Initialise components SkipLink(); @@ -19,8 +24,10 @@ AutoComplete({ containerId: 'autocomplete-container', formId: 'search', inputId: 'search-field', + onConfirm, source, templates: { + inputValue, suggestion, }, }); diff --git a/app/scripts/search.js b/app/scripts/search.js index 7a5b4cceb..c6033ba1d 100644 --- a/app/scripts/search.js +++ b/app/scripts/search.js @@ -3,10 +3,17 @@ * @param {string} result String containing individual result from autocomplete source function * @returns {string} String of HTML containing passed result */ -export const suggestion = result => ` - - ${result} -`; +export const suggestion = (obj) => { + return ` + + ${obj.title} + `; +}; + +export const inputValue = (obj) => { + if (obj && obj.title) return obj.title.trim(); + return ''; +}; /** * Function to populate the search autocomplete. @@ -21,8 +28,12 @@ export const source = (query, populateResults) => { xhr.onload = () => { if (xhr.status === 200) { const json = JSON.parse(xhr.responseText); - populateResults(json.map(({ title }) => title).filter(Boolean)); + populateResults(json); } }; xhr.send(); }; + +export const onConfirm = ({ url }) => { + window.location = url; +}; diff --git a/middleware/file-helper.js b/middleware/file-helper.js index 6daf5d653..5830b5f08 100644 --- a/middleware/file-helper.js +++ b/middleware/file-helper.js @@ -1,62 +1,60 @@ -var fs = require('fs') -const beautify = require('js-beautify').html -const nunjucks = require('nunjucks') +const fs = require('fs'); +const beautify = require('js-beautify').html; +const nunjucks = require('nunjucks'); // This helper function takes a path of a file and // returns the contents as string function getFileContents(path) { - let fileContents + let fileContents; try { - fileContents = fs.readFileSync(path) + fileContents = fs.readFileSync(path); } catch (err) { if (err.code === 'ENOENT') { - console.log(err.message) + console.log(err.message); } else { - throw err + throw err; } } - return fileContents.toString() + return fileContents.toString(); } - // This helper function takes a path of a *.md.njk file and // returns the Nunjucks syntax inside that file without markdown data and imports -exports.getNunjucksCode = function(path) { - let fileContents = getFileContents(path) +exports.getNunjucksCode = (path) => { + const fileContents = getFileContents(path); // Omit any `{% extends "foo.njk" %}` nunjucks code, because we extend // templates that only exist within the Design System – it's not useful to // include this in the code we expect others to copy. - let content = fileContents.replace( + const content = fileContents.replace( /{%\s*extends\s*\S*\s*%}\s+/, '' - ) - - return content -} + ); + return content; +}; // This helper function takes a path of a *.md.njk file and // returns the HTML rendered by Nunjucks without markdown data -exports.getHTMLCode = function(path) { - let fileContents = getFileContents(path) +exports.getHTMLCode = function (path) { + const fileContents = getFileContents(path); - let html + let html; try { - html = nunjucks.renderString(fileContents) + html = nunjucks.renderString(fileContents); } catch (err) { if (err) { - console.log('Could not get HTML code from ' + path) + console.log(`Could not get HTML code from ${ path}`); } } return beautify(html.trim(), { - indent_size: 2, end_with_newline: true, + indent_size: 2, // If there are multiple blank lines, reduce down to one blank new line. max_preserve_newlines: 1, // set unformatted to a small group of elements, not all inline (the default) // otherwise tags like label arent indented properly - unformatted: ['code', 'pre', 'em', 'strong'] - }) -} + unformatted: ['code', 'pre', 'em', 'strong'], + }); +}; diff --git a/middleware/page-index-additions.js b/middleware/page-index-additions.js index 0211f3090..2c7dd42eb 100644 --- a/middleware/page-index-additions.js +++ b/middleware/page-index-additions.js @@ -1,17 +1,16 @@ const additionalIndices = { - '/service-manual/accessibility/testing': [ 'svg' ] + '/service-manual/accessibility/testing': ['svg'], }; - const alternativeSpelling = { - 'alzheimer’s': [ 'alzheimers', 'alzheimer' ], - 'fever': [ 'temperature' ], - 'temperature': [ 'fever' ] + 'alzheimer’s': ['alzheimers', 'alzheimer'], + fever: ['temperature'], + temperature: ['fever'], }; const indexBlacklist = [ '/service-manual/', - 'https://nhsdigital.eu.qualtrics.com/jfe/form/SV_4SKczWOHvnneiWh' + 'https://nhsdigital.eu.qualtrics.com/jfe/form/SV_4SKczWOHvnneiWh', ]; module.exports = { additionalIndices, alternativeSpelling, indexBlacklist }; diff --git a/middleware/page-index.js b/middleware/page-index.js index ee18210c0..c133cc300 100644 --- a/middleware/page-index.js +++ b/middleware/page-index.js @@ -11,72 +11,70 @@ class PageIndex { } init() { - var startTime = new Date().getTime(); - const baseUrl = `http://localhost:${this.config.port}` - const config = this._getConnectionConfig() + const startTime = new Date().getTime(); + const baseUrl = `http://localhost:${this.config.port}`; + const config = this.getConnectionConfig(); axios.get(`${baseUrl}/service-manual/sitemap`, config) - .then((response) => { - var pages = []; - const $ = cheerio.load(response.data); - var links = $('#maincontent').find('a'); - links.each((i, el) => { - var href = $(el).attr('href'); - if (!indexBlacklist.includes(href)) { - var url = `${baseUrl}${href}`; - if (href.toLowerCase().includes('http')) { - url = href; + .then((response) => { + const pages = []; + const $ = cheerio.load(response.data); + const links = $('#maincontent').find('a'); + links.each((i, el) => { + const href = $(el).attr('href'); + if (!indexBlacklist.includes(href)) { + let url = `${baseUrl}${href}`; + if (href.toLowerCase().includes('http')) { + url = href; + } + pages.push(axios.get(url, config)); } - pages.push(axios.get(url, config)); - } - }) + }); - return axios.all(pages); - }) - .then((responses) => { - for (var response of responses) { - const $ = cheerio.load(response.data); - const url = response.request.path; - var description = this._parseDescription($); - if (this._isSpecialIndex($)) { - this._indexPageSpecial($, url, description) - } - else { - this._indexPageNormal($, url, description); - } - } + return axios.all(pages); + }) + .then((responses) => { + responses.forEach((response) => { + const $ = cheerio.load(response.data); + const url = response.request.path; + const description = this.parseDescription($); + if (this.isSpecialIndex($)) { + this.indexPageSpecial($, url, description); + } else { + this.indexPageNormal($, url, description); + } + }); - this.index = lunr((builder) => { - builder.ref('url'); - builder.field('title'); - builder.field('h2'); - builder.field('h3'); - builder.field('extra'); + this.index = lunr((builder) => { + builder.ref('url'); + builder.field('title'); + builder.field('h2'); + builder.field('h3'); + builder.field('extra'); - for (var i = 0; i < this.docs.length; i++) { - builder.add(this.docs[i]); - } + for (let i = 0; i < this.docs.length; i++) { + builder.add(this.docs[i]); + } + }); + const endTime = new Date().getTime(); + const indexTime = (endTime - startTime) / 1000; + console.log(`Page index finished in ${indexTime}s`); }) - var endTime = new Date().getTime(); - var indexTime = (endTime - startTime) / 1000; - console.log(`Page index finished in ${indexTime}s`); - }) - .catch((err) => { - var reason = '' - if (err.response) { - reason = `${err.message} URL: ${err.response.config.url}` - } - else { - reason = err.message - } - console.log(`Unable to index pages. Reason: ${reason}`); - }) + .catch((err) => { + let reason = ''; + if (err.response) { + reason = `${err.message} URL: ${err.response.config.url}`; + } else { + reason = err.message; + } + console.log(`Unable to index pages. Reason: ${reason}`); + }); } search(query) { - var results = this._searchIndex(query); - var output = []; - for (var i = 0; i < results.length; i++) { - var data = this._getData(results[i]); + const results = this.searchIndex(query); + const output = []; + for (let i = 0; i < results.length; i++) { + const data = this.getData(results[i]); if (data) { output.push(data); } @@ -84,29 +82,28 @@ class PageIndex { return output; } - _searchIndex(query) { - var results = [] + searchIndex(query) { + let results = []; if (query && this.index) { - results = this.index.query(function(q) { - lunr.tokenizer(query).forEach(function (token) { - q.term(token.toString(), { fields: [ 'title' ], boost: 100 }) - q.term(token.toString(), { fields: [ 'h2' ], boost: 80 }) - q.term(token.toString(), { fields: [ 'h3' ], boost: 60 }) - q.term(token.toString(), { fields: [ 'extra' ], boost: 40 }) - - - q.term(`${token.toString()}*`, { fields: [ 'title' ], boost: 90 }) - q.term(`${token.toString()}*`, { fields: [ 'h2' ], boost: 70 }) - q.term(`${token.toString()}*`, { fields: [ 'h3' ], boost: 50 }) - q.term(`${token.toString()}*`, { fields: [ 'extra' ], boost: 30 }) - }) - }) + results = this.index.query((q) => { + lunr.tokenizer(query).forEach((token) => { + q.term(token.toString(), { boost: 100, fields: ['title'] }); + q.term(token.toString(), { boost: 80, fields: ['h2'] }); + q.term(token.toString(), { boost: 60, fields: ['h3'] }); + q.term(token.toString(), { boost: 40, fields: ['extra'] }); + + q.term(`${token.toString()}*`, { boost: 90, fields: ['title'] }); + q.term(`${token.toString()}*`, { boost: 70, fields: ['h2'] }); + q.term(`${token.toString()}*`, { boost: 50, fields: ['h3'] }); + q.term(`${token.toString()}*`, { boost: 30, fields: ['extra'] }); + }); + }); } - return results + return results; } - _getData(result) { - for (var i = 0; i < this.docs.length; i++) { + getData(result) { + for (let i = 0; i < this.docs.length; i++) { if (result.ref === this.docs[i].url) { return this.docs[i]; } @@ -114,68 +111,71 @@ class PageIndex { return undefined; } - _indexPageNormal($, url, description) { - var title = this._parsePageHeadings($, 'h1').join(' '); - var h2 = this._getIndex($, 'h2'); - var h3 = this._getIndex($, 'h3'); - var extra = this._getAdditionalIndices(url).join(' '); + indexPageNormal($, url, description) { + const title = this.parsePageHeadings($, 'h1').join(' '); + const h2 = this.getIndex($, 'h2'); + const h3 = this.getIndex($, 'h3'); + const extra = this.getAdditionalIndices(url).join(' '); this.docs.push({ - url: url, - title: title, - h2: h2, - h3: h3, - extra: extra, - description: description + url, + title, + h2, + h3, + extra, + description, }); } - _indexPageSpecial($, url, description) { - var titles = this._parsePageHeadings($, 'h3'); - for (var rawTitle of titles) { - var formattedTitle = rawTitle.charAt(0).toUpperCase() + rawTitle.slice(1); - var extra = this._getAdditionalIndices(url).join(' '); - var h3 = this._getAltList([ rawTitle ]); - var formattedUrl = `${url}#${rawTitle.split(' ').join('-')}` + indexPageSpecial($, url, description) { + const titles = this.parsePageHeadings($, 'h3'); + titles.forEach((rawTitle) => { + const formattedTitle = rawTitle.charAt(0).toUpperCase() + rawTitle.slice(1); + const extra = this.getAdditionalIndices(url).join(' '); + const h3 = this.getAltList([rawTitle]); + const formattedUrl = `${url}#${rawTitle.split(' ').join('-')}`; this.docs.push({ url: formattedUrl, title: `${formattedTitle} - A to Z of NHS health writing`, h2: '', - h3: h3, - extra: extra, - description: description + h3, + extra, + description, }); - } + }); } - _getAdditionalIndices(url) { + getAdditionalIndices(url) { if (url in additionalIndices) { return additionalIndices[url]; } return []; } - _parsePageHeadings($, type) { - var headings = []; + parsePageHeadings($, type) { + const headings = []; $('#maincontent').find(type).each((i, el) => { - if($(el).children().length === 0) { - headings.push($(el).text()); + if ($(el).children().length === 0) { + headings.push($(el).text().trim()); + } else { + const title = $('title').text(); + headings.push(title.split(' - ')[0]); } - }) + }); return headings; } - _getIndex($, type) { - var headingsList = this._parsePageHeadings($, type); - var altList = this._getAltList(headingsList); + getIndex($, type) { + const headingsList = this.parsePageHeadings($, type); + const altList = this.getAltList(headingsList); return headingsList.concat(altList).join(' '); } - _getAltList(list) { - var listString = list.join(' ').toLowerCase(); - var altList = []; - for (var key in alternativeSpelling) { + getAltList(list) { + const listString = list.join(' ').toLowerCase(); + let altList = []; + for (const key in alternativeSpelling) { if (listString.includes(key.toLowerCase())) { altList = altList.concat(alternativeSpelling[key]); } @@ -183,31 +183,31 @@ class PageIndex { return altList; } - _parseDescription($) { - return this._parseMeta($, 'description'); + parseDescription($) { + return this.parseMeta($, 'description'); } - _isSpecialIndex($) { - if (this._parseMeta($, 'page-index') === 'special' ) { + isSpecialIndex($) { + if (this.parseMeta($, 'page-index') === 'special') { return true; } return false; } - _parseMeta($, name) { + parseMeta($, name) { return $(`meta[name='${name}']`).attr('content'); } - _getConnectionConfig() { + getConnectionConfig() { if (process.env.MANUAL_USERNAME || process.env.MANUAL_PASSWORD) { return { auth: { username: process.env.MANUAL_USERNAME, - password: process.env.MANUAL_PASSWORD - } - } + password: process.env.MANUAL_PASSWORD, + }, + }; } - return {} + return {}; } } From 855fb5b7178e66c55426ad9dcdce19c83c8ef530 Mon Sep 17 00:00:00 2001 From: Sabeeh UL-Hassan Date: Mon, 2 Dec 2019 13:02:22 +0000 Subject: [PATCH 07/49] hide search on search page --- app/views/includes/header.njk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/includes/header.njk b/app/views/includes/header.njk index b57499fff..fafe421d7 100755 --- a/app/views/includes/header.njk +++ b/app/views/includes/header.njk @@ -9,7 +9,7 @@ "longName": "true" }, "showNav": "false", - "showSearch": "true", + "showSearch": "false", "searchAction": "/service-manual/search/", "searchInputName": "search-field" }) From f8f2206bda7ece99f4bbffb1ea71536d5ecb478e Mon Sep 17 00:00:00 2001 From: Sabeeh UL-Hassan Date: Mon, 2 Dec 2019 13:24:03 +0000 Subject: [PATCH 08/49] fix linting --- app/scripts/search.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/app/scripts/search.js b/app/scripts/search.js index c6033ba1d..0df3b6777 100644 --- a/app/scripts/search.js +++ b/app/scripts/search.js @@ -3,12 +3,10 @@ * @param {string} result String containing individual result from autocomplete source function * @returns {string} String of HTML containing passed result */ -export const suggestion = (obj) => { - return ` - - ${obj.title} - `; -}; +export const suggestion = obj => ` + + ${obj.title} +`; export const inputValue = (obj) => { if (obj && obj.title) return obj.title.trim(); From 89e5806bc9902121ad164559e98dc5c01afb67f1 Mon Sep 17 00:00:00 2001 From: Sabeeh UL-Hassan Date: Mon, 2 Dec 2019 15:25:18 +0000 Subject: [PATCH 09/49] fix jest tests --- tests/page-index.spec.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/page-index.spec.js b/tests/page-index.spec.js index d86a2c721..7ed026019 100644 --- a/tests/page-index.spec.js +++ b/tests/page-index.spec.js @@ -12,7 +12,7 @@ test('test parse page description', () => { var pageData = '' const $ = cheerio.load(pageData) - expect(pageIndex._parseDescription($)).toBe('Design and build digital services for the NHS. Things you need to make consistent, usable services that put people first.') + expect(pageIndex.parseDescription($)).toBe('Design and build digital services for the NHS. Things you need to make consistent, usable services that put people first.') }) @@ -22,14 +22,14 @@ test('test get index', () => { const $ = cheerio.load(pageData) const expectedIndex = 'test fever temperature' - expect(pageIndex._getIndex($, 'h2')).toBe(expectedIndex) + expect(pageIndex.getIndex($, 'h2')).toBe(expectedIndex) }) test('test get alt list', () => { var list = [ 'fever' ] var pageIndex = new PageIndex(config) - expect(pageIndex._getAltList(list)).toEqual([ 'temperature' ]) + expect(pageIndex.getAltList(list)).toEqual([ 'temperature' ]) }) @@ -38,5 +38,5 @@ test('test parse page title', () => { var pageData = '

    title

    title2

    ' const $ = cheerio.load(pageData) - expect(pageIndex._parsePageHeadings($, 'h1')).toEqual(['title2']) + expect(pageIndex.parsePageHeadings($, 'h1')).toEqual(['title2']) }) From 9fc6e90a51b6c9ce91b6c0c972c578fc5d3cf9de Mon Sep 17 00:00:00 2001 From: AdamChrimes Date: Wed, 4 Dec 2019 15:58:15 +0000 Subject: [PATCH 10/49] include the header JavaScript for the search button on mobile --- app/scripts/main.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/scripts/main.js b/app/scripts/main.js index e8b18c0dd..e76c9f3ad 100644 --- a/app/scripts/main.js +++ b/app/scripts/main.js @@ -3,6 +3,7 @@ import './polyfills'; // NHS.UK frontend import AutoComplete from 'nhsuk-frontend/packages/components/header/autoCompleteConfig'; +import Header from '../../node_modules/nhsuk-frontend/packages/components/header/header'; import SkipLink from '../../node_modules/nhsuk-frontend/packages/components/skip-link/skip-link'; import DesignExample from './design-example'; import { @@ -13,6 +14,7 @@ import { } from './search'; // Initialise components +Header(); SkipLink(); document.querySelectorAll(DesignExample.selector()).forEach((el) => { From c8261f013166e906c61da429a12a0df82edf5ebd Mon Sep 17 00:00:00 2001 From: Sara Wilcox Date: Thu, 5 Dec 2019 10:31:31 +0000 Subject: [PATCH 11/49] Tweak lists info --- app/views/content/formatting-and-punctuation.njk | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/views/content/formatting-and-punctuation.njk b/app/views/content/formatting-and-punctuation.njk index 577b45611..66e7e9419 100644 --- a/app/views/content/formatting-and-punctuation.njk +++ b/app/views/content/formatting-and-punctuation.njk @@ -102,10 +102,11 @@

    Use lists to make text easier to read.​

    Bulleted lists should be short and snappy. If possible, limit your list to no more than 6 items.​ Each item in the list should be roughly the same length.

    We use bullet points in care cards and Do and Don’t lists.

    -

    Lead-in lists

    +

    Lists with a lead-in line

    +

    This is our preferred list style.

    Use a lead-in line with a colon. The bullets should make sense running on from the lead-in line. In effect, the list is 1 continuous sentence.

    Example:

    -

    "A pharmacist can recommend:

    +

    A pharmacist can recommend:

    • creams to ease pain and irritation
    • antiviral creams to speed up healing time
    • @@ -115,9 +116,9 @@

      Do not include more than 1 sentence at each bullet point.

      Avoid ending a bullet point with "and" and "or". Use the lead-in to let people know the options.

      Full sentence lists

      -

      If your user research shows that it helps your users, you can use full sentence bullet points. For example, our medicines information uses full sentence bullet points for key facts:

      +

      If your user research shows that it helps your users, you can use full sentence bullet points. For example, our medicines information uses full sentence bullet points for key facts.

      Example:

      -

      "Key facts:

      +

      Key facts

      1. Paracetamol takes up to an hour to work.
      2. The usual dose of paracetamol is one or two 500mg tablets at a time.
      3. @@ -125,11 +126,11 @@
      4. Paracetamol is safe to take in pregnancy and while breastfeeding, at recommended doses.
      5. Brand names include Disprol, Hedex, Medinol and Panadol.
      -

      Each bullet point should be distinct information, start with a capital letter and end with a full stop. There should be no lead in line."

      +

      Each bullet point should be distinct information, start with a capital letter and end with a full stop. There should be no lead in line.

      Numbered lists

      We use numbered lists instead of bulleted ones to guide people through a process. ​ Each point starts with a capital letter and ends with a full stop, without a lead-in line.

      Example:

      -

      How to gargle with salt water:

      +

      How to gargle with salt water:

      1. Dissolve half a teaspoon of salt in a glass of warm water.
      2. Gargle with the solution then spit it out – don't swallow it.
      3. @@ -151,7 +152,7 @@
    -

    Updated: August 2019

    +

    Updated: December 2019

    {% endblock %} From d2029c247dc0de9ef41ec2df926d2fd0828acc32 Mon Sep 17 00:00:00 2001 From: Sabeeh UL-Hassan Date: Thu, 5 Dec 2019 11:43:42 +0000 Subject: [PATCH 12/49] add result truncation --- app/scripts/search.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/scripts/search.js b/app/scripts/search.js index 0df3b6777..276b85943 100644 --- a/app/scripts/search.js +++ b/app/scripts/search.js @@ -3,10 +3,14 @@ * @param {string} result String containing individual result from autocomplete source function * @returns {string} String of HTML containing passed result */ -export const suggestion = obj => ` - - ${obj.title} -`; +export const suggestion = (obj) => { + const truncateLength = 36; + const dots = obj.title.length > truncateLength ? '...' : ''; + const resultTruncated = obj.title.substring(0, truncateLength) + dots; + return ` + ${resultTruncated} + `; +}; export const inputValue = (obj) => { if (obj && obj.title) return obj.title.trim(); From 420e145599ce6f001084c7600d14a6c08fddbd73 Mon Sep 17 00:00:00 2001 From: Sabeeh UL-Hassan Date: Thu, 5 Dec 2019 11:48:42 +0000 Subject: [PATCH 13/49] truncation cleanup --- app/scripts/search.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/scripts/search.js b/app/scripts/search.js index 276b85943..179154cff 100644 --- a/app/scripts/search.js +++ b/app/scripts/search.js @@ -3,10 +3,10 @@ * @param {string} result String containing individual result from autocomplete source function * @returns {string} String of HTML containing passed result */ -export const suggestion = (obj) => { +export const suggestion = ({title}) => { const truncateLength = 36; - const dots = obj.title.length > truncateLength ? '...' : ''; - const resultTruncated = obj.title.substring(0, truncateLength) + dots; + const dots = title.length > truncateLength ? '...' : ''; + const resultTruncated = title.substring(0, truncateLength) + dots; return ` ${resultTruncated} `; From 4d34a6aee17d7938f32f961ab1a0a4998d683cd1 Mon Sep 17 00:00:00 2001 From: davidhunter08 Date: Mon, 9 Dec 2019 10:10:51 +0000 Subject: [PATCH 14/49] update search results template and focus styles --- app/styles/app/_search.scss | 10 ++++++++-- app/views/includes/search.njk | 8 ++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/styles/app/_search.scss b/app/styles/app/_search.scss index 22f7281c0..2ddd626db 100644 --- a/app/styles/app/_search.scss +++ b/app/styles/app/_search.scss @@ -59,7 +59,8 @@ width: 100%; /* [2] */ &:focus { - box-shadow: inset 0 0 0 $nhsuk-box-shadow-spread $nhsuk-focus-color; + border: $nhsuk-box-shadow-spread solid $nhsuk-focus-color; + box-shadow: inset 0 0 0 $nhsuk-box-shadow-spread $nhsuk-focus-text-color; } } @@ -95,7 +96,12 @@ } &:focus { - box-shadow: inset 0 0 0 $nhsuk-box-shadow-spread $nhsuk-focus-color; + background-color: $nhsuk-focus-color; + border-bottom: 4px solid #212b32; + + .nhsuk-icon__search { + fill: $nhsuk-focus-text-color; + } } &:active { diff --git a/app/views/includes/search.njk b/app/views/includes/search.njk index 72376a37d..ea516d1a7 100644 --- a/app/views/includes/search.njk +++ b/app/views/includes/search.njk @@ -22,16 +22,16 @@
    -

    - Found {{ resultsLen }} matching results. +

    + {{ resultsLen }} results

    - + {% if results | length > 0 %}
      {% for item in results %}
    • {{item.title}} -

      {{item.description}}

      +

      {{item.description}}

    • {% endfor %}
    From 8297c8adaf6c32661e822e78617fb220aabf7a13 Mon Sep 17 00:00:00 2001 From: Sabeeh UL-Hassan Date: Mon, 9 Dec 2019 14:02:55 +0000 Subject: [PATCH 15/49] add focus styles on results dropdown --- app/scripts/search.js | 2 +- app/styles/app/_search.scss | 19 +++++++++++++++++++ app/views/includes/search.njk | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/scripts/search.js b/app/scripts/search.js index 179154cff..ce35a866d 100644 --- a/app/scripts/search.js +++ b/app/scripts/search.js @@ -8,7 +8,7 @@ export const suggestion = ({title}) => { const dots = title.length > truncateLength ? '...' : ''; const resultTruncated = title.substring(0, truncateLength) + dots; return ` - ${resultTruncated} + ${resultTruncated} `; }; diff --git a/app/styles/app/_search.scss b/app/styles/app/_search.scss index 2ddd626db..617008d5b 100644 --- a/app/styles/app/_search.scss +++ b/app/styles/app/_search.scss @@ -126,3 +126,22 @@ .app-search-results-item::first-letter { text-transform: uppercase; } +.autocomplete__option { + text-decoration: none; + + &:focus { + .autocomplete__option-title { + @include nhsuk-focused-text; + } + } + + &:hover, &:focus { + .autocomplete__option-title { + text-decoration: none; + } + } + + &-title { + text-decoration: underline; + } +} \ No newline at end of file diff --git a/app/views/includes/search.njk b/app/views/includes/search.njk index ea516d1a7..6798398f6 100644 --- a/app/views/includes/search.njk +++ b/app/views/includes/search.njk @@ -23,7 +23,7 @@

    - {{ resultsLen }} results + {{ resultsLen }} result{%if results | length != 1%}s{%endif%}

    {% if results | length > 0 %} From ff244121058e3c82e61619b24c5923f50f46cf94 Mon Sep 17 00:00:00 2001 From: Sabeeh UL-Hassan Date: Mon, 9 Dec 2019 14:11:59 +0000 Subject: [PATCH 16/49] fix linting error --- app/scripts/search.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/scripts/search.js b/app/scripts/search.js index ce35a866d..31dc64026 100644 --- a/app/scripts/search.js +++ b/app/scripts/search.js @@ -3,12 +3,12 @@ * @param {string} result String containing individual result from autocomplete source function * @returns {string} String of HTML containing passed result */ -export const suggestion = ({title}) => { +export const suggestion = ({ title }) => { const truncateLength = 36; const dots = title.length > truncateLength ? '...' : ''; const resultTruncated = title.substring(0, truncateLength) + dots; return ` - ${resultTruncated} + ${resultTruncated} `; }; From ee9e9ed01bcedea057ac7da87b850b1ca20d272a Mon Sep 17 00:00:00 2001 From: davidhunter08 Date: Mon, 9 Dec 2019 14:12:22 +0000 Subject: [PATCH 17/49] autcomplete hotfixes --- app/styles/app/_search.scss | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/styles/app/_search.scss b/app/styles/app/_search.scss index 2ddd626db..ce935aed8 100644 --- a/app/styles/app/_search.scss +++ b/app/styles/app/_search.scss @@ -126,3 +126,21 @@ .app-search-results-item::first-letter { text-transform: uppercase; } + +// Autocomplete list hotfixes + +.autocomplete__option .nhsuk-icon__search { + margin: 2px 4px 2px 0; +} + +@include mq($from: tablet) { + + .autocomplete__option:last-child { + padding-bottom: 0; + } + + .autocomplete__menu { + padding: 16px 8px; + } + +} From 9247b0e2cf00c3be5456884c1e43d6206c079cda Mon Sep 17 00:00:00 2001 From: Sabeeh UL-Hassan Date: Mon, 9 Dec 2019 14:18:35 +0000 Subject: [PATCH 18/49] add span --- app/scripts/search.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/scripts/search.js b/app/scripts/search.js index 31dc64026..d56905fdb 100644 --- a/app/scripts/search.js +++ b/app/scripts/search.js @@ -8,7 +8,7 @@ export const suggestion = ({ title }) => { const dots = title.length > truncateLength ? '...' : ''; const resultTruncated = title.substring(0, truncateLength) + dots; return ` - ${resultTruncated} + ${resultTruncated} `; }; From 8a8c91bb8cddcafada2a3b1adf21475025723774 Mon Sep 17 00:00:00 2001 From: Sabeeh UL-Hassan Date: Mon, 9 Dec 2019 14:24:29 +0000 Subject: [PATCH 19/49] hide resuslts counter when no results --- app/views/includes/search.njk | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/views/includes/search.njk b/app/views/includes/search.njk index 6798398f6..e7f98670d 100644 --- a/app/views/includes/search.njk +++ b/app/views/includes/search.njk @@ -22,11 +22,10 @@
    -

    - {{ resultsLen }} result{%if results | length != 1%}s{%endif%} -

    - {% if results | length > 0 %} +

    + {{ resultsLen }} result{%if results | length != 1%}s{%endif%} +

      {% for item in results %}
    • From ce713518627e1802d4d1c875d3a99f7a9336ee9d Mon Sep 17 00:00:00 2001 From: Sara Wilcox Date: Tue, 12 Nov 2019 11:24:25 +0000 Subject: [PATCH 20/49] Update and reorder service standard pages --- ...nd-their-needs-context-health-and-care.njk | 12 +- ...-about-how-your-service-is-performing.njk} | 11 +- ...choose-the-right-tools-and-technology.njk} | 9 +- ...n.njk => 12-make-new-source-code-open.njk} | 11 +- ...ndards-common-components-and-patterns.njk} | 15 ++- ....njk => 14-operate-a-reliable-service.njk} | 9 +- ...e.njk => 15-support-a-culture-of-care.njk} | 16 +-- ... 16-make-your-service-clinically-safe.njk} | 12 +- ...=> 17-make-your-service-interoperable.njk} | 24 ++-- ...em-and-provide-a-joined-up-experience.njk} | 18 +-- ...k => 4-make-the-service-simple-to-use.njk} | 7 +- ...ake-sure-everyone-can-use-the-service.njk} | 13 +- ...idisciplinary-skills-and-perspectives.njk} | 7 +- ...ng.njk => 7-use-agile-ways-of-working.njk} | 9 +- ...k => 8-iterate-and-improve-frequently.njk} | 14 ++- ...ect-users-confidentiality-and-privacy.njk} | 7 +- app/views/service-standard/about.njk | 37 +++--- app/views/service-standard/index.njk | 119 +++++++++--------- 18 files changed, 181 insertions(+), 169 deletions(-) rename app/views/service-standard/{11-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk => 10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk} (83%) rename app/views/service-standard/{13-choose-the-right-tools-and-technology.njk => 11-choose-the-right-tools-and-technology.njk} (93%) rename app/views/service-standard/{14-make-new-source-code-open.njk => 12-make-new-source-code-open.njk} (85%) rename app/views/service-standard/{15-use-and-contribute-to-common-components-and-patterns.njk => 13-use-and-contribute-to-open-standards-common-components-and-patterns.njk} (68%) rename app/views/service-standard/{16-operate-a-reliable-service.njk => 14-operate-a-reliable-service.njk} (88%) rename app/views/service-standard/{5-support-a-culture-of-care.njk => 15-support-a-culture-of-care.njk} (76%) rename app/views/service-standard/{6-make-your-service-clinically-safe.njk => 16-make-your-service-clinically-safe.njk} (83%) rename app/views/service-standard/{12-make-your-service-interoperable.njk => 17-make-your-service-interoperable.njk} (77%) rename app/views/service-standard/{2-join-things-up-and-work-towards-solving-a-whole-problem.njk => 2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk} (78%) rename app/views/service-standard/{3-make-the-service-easy-to-use.njk => 4-make-the-service-simple-to-use.njk} (92%) rename app/views/service-standard/{4-make-sure-everyone-can-use-the-service.njk => 5-make-sure-everyone-can-use-the-service.njk} (84%) rename app/views/service-standard/{8-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk => 6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk} (89%) rename app/views/service-standard/{9-use-agile-ways-of-working.njk => 7-use-agile-ways-of-working.njk} (90%) rename app/views/service-standard/{10-iterate-and-improve-frequently.njk => 8-iterate-and-improve-frequently.njk} (82%) rename app/views/service-standard/{7-respect-and-protect-users-confidentiality-and-privacy.njk => 9-respect-and-protect-users-confidentiality-and-privacy.njk} (95%) diff --git a/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk b/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk index e0f1fffda..ff5bfa1a4 100644 --- a/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk +++ b/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk @@ -31,9 +31,10 @@

      Why it's important

      -

      Lots of products and services aren't useful for users. Others are frustrating and hard to use. You need to understand your users and their needs - from their point of view - to build something that helps them.

      -

      The most obvious problem isn't always the one that really needs solving. Test your assumptions early to reduce the risk of building the wrong thing.

      +

      Lots of products and services are not useful for users. Others are frustrating and hard to use. You need to understand your users and their needs - from their point of view - to build something that helps them.

      Understanding as much of the context as possible will give you the best chance of meeting users' needs in a simple, cost effective way.

      +

      The most obvious problem is not always the one that really needs solving. Test your assumptions early and often to reduce the risk of building the wrong thing.

      +

      What you should do

      If you're building a public-facing service

      @@ -56,8 +57,7 @@

      Guidance

      GOV.UK resources

      -

      This point reflects point 1 in the Government service standard.

      - -

      Updated: April 2019

      +

      Updated: December 2019

    diff --git a/app/views/service-standard/11-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk b/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk similarity index 83% rename from app/views/service-standard/11-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk rename to app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk index da75d9dbb..5a559bf14 100644 --- a/app/views/service-standard/11-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk +++ b/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk @@ -1,4 +1,4 @@ -{% set pageTitle = '11. Define what success looks like and be open about how your service is performing' %} +{% set pageTitle = '10. Define what success looks like and be open about how your service is performing' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Work out how your service helps improve health and well being, people's experience of health and care, and the efficiency of the health service and how you will know that you're succeeding.' %} {% set noFollow = true %} @@ -22,8 +22,8 @@

    {{pageTitle}}

    -

    Work out how your service helps improve health and well being, people's experience of health and care, and the efficiency of the health service and how you will know that you're succeeding. If you can't measure health benefits, choose other suitable indicators.

    -

    Collect performance information so that you can measure and show that the service is effective and improving.

    +

    Work out how your service helps improve health and well being, people's experience of health and care, and the efficiency of the health service and how you will know that you're succeeding. If you cannot measure health benefits, choose other suitable indicators.

    +

    Collect performance information across all channels so that you can measure and show that the service is effective and improving.

    @@ -43,13 +43,13 @@
  • you have identified appropriate metrics and are tracking performance against them
  • you are able to identify not only the benefits but also potential negative impact, inappropriate use or unintended consequences
  • you use performance data to make decisions about how to fix problems and improve the service
  • +
  • you iterate and improve your metrics and data collection practices as you learn more about user needs
  • you make performance information public
  • Guidance

    GOV.UK resources

    -

    This point reflects point 10 in the Government service standard.

    @@ -58,6 +58,7 @@ -

    Updated: April 2019

    +

    Updated: December 2019

    diff --git a/app/views/service-standard/13-choose-the-right-tools-and-technology.njk b/app/views/service-standard/11-choose-the-right-tools-and-technology.njk similarity index 93% rename from app/views/service-standard/13-choose-the-right-tools-and-technology.njk rename to app/views/service-standard/11-choose-the-right-tools-and-technology.njk index 1af4fe8ff..1fce67f1c 100644 --- a/app/views/service-standard/13-choose-the-right-tools-and-technology.njk +++ b/app/views/service-standard/11-choose-the-right-tools-and-technology.njk @@ -1,4 +1,4 @@ -{% set pageTitle = '13. Choose the right tools and technology' %} +{% set pageTitle = '11. Choose the right tools and technology' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Choose tools and technology that let you build a good service in an efficient, cost effective way.' %} {% set noFollow = true %} @@ -48,18 +48,17 @@

    Guidance

    GOV.UK resources

    -

    This point reflects point 11 in the Government service standard.

    Read more about this

    @@ -69,7 +68,7 @@
  • Talk to us on the service manual Slack channel or email the standards team at service-manual@nhs.net.
  • -

    Updated: April 2019

    +

    Updated: December 2019

    diff --git a/app/views/service-standard/14-make-new-source-code-open.njk b/app/views/service-standard/12-make-new-source-code-open.njk similarity index 85% rename from app/views/service-standard/14-make-new-source-code-open.njk rename to app/views/service-standard/12-make-new-source-code-open.njk index 1f159beb9..18b0cde77 100644 --- a/app/views/service-standard/14-make-new-source-code-open.njk +++ b/app/views/service-standard/12-make-new-source-code-open.njk @@ -1,4 +1,4 @@ -{% set pageTitle = '14. Make new source code open' %} +{% set pageTitle = '12. Make new source code open' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Make all new source code open and reusable, and publish it under appropriate licences.' %} {% set noFollow = true %} @@ -22,7 +22,7 @@

    {{pageTitle}}

    -

    Make all new source code open and reusable, and publish it under appropriate licences. If you can't do this for specific subsets of the source code, provide a convincing explanation.

    +

    Make all new source code open and reusable, and publish it under appropriate licences. If you cannot do this for specific subsets of the source code, provide a convincing explanation.

    @@ -37,7 +37,7 @@

    Your team should be able to show that you:

    • have written code in the open from the start, and publish it in an open repository - minus any sensitive information, like secret keys and credentials
    • -
    • keep ownership of the intellectual property of new source code that’s created as part of the service, and make it available for reuse under an open licence
    • +
    • keep ownership of the intellectual property of new source code that's created as part of the service, and make it available for reuse under an open licence

    There are a few cases when you should not publish code in the open. For example, code that relates to a sensitive government policy that hasn’t been announced yet.

    @@ -45,11 +45,10 @@

    NHS service manual

    GOV.UK resources

    -

    This point reflects point 12 in the Government service standard.

    -

    Updated: April 2019

    +

    Updated: December 2019

    diff --git a/app/views/service-standard/15-use-and-contribute-to-common-components-and-patterns.njk b/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk similarity index 68% rename from app/views/service-standard/15-use-and-contribute-to-common-components-and-patterns.njk rename to app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk index 8f1d26868..a4dab0cd7 100644 --- a/app/views/service-standard/15-use-and-contribute-to-common-components-and-patterns.njk +++ b/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk @@ -1,6 +1,6 @@ -{% set pageTitle = '15. Use and contribute to common components and patterns' %} +{% set pageTitle = '13. Use and contribute to open standards, common components and patterns' %} {% set pageSection = 'NHS service standard' %} -{% set pageDescription = 'Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK design system.' %} +{% set pageDescription = 'Use open standards and tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK design system.' %} {% set noFollow = true %} {% extends 'includes/layout.njk' %} @@ -22,7 +22,9 @@

    {{pageTitle}}

    -

    Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK design system. If you develop your own patterns or components, share them publicly so other people can use them.

    +

    Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK design system.

    + +

    Use open standards, and propose a new open standard if there is not one that already meets your needs.

    @@ -30,7 +32,7 @@

    Why it's important

    -

    Using common components and patterns means you don’t have to solve problems that have already been solved. By using a component or pattern that’s already been extensively tested, you can provide users with a good experience in a cost effective way.

    +

    Using common components and patterns means you do not have to solve problems that have already been solved. By using a component or pattern that’s already been extensively tested, you can provide users with a good experience in a cost effective way.

    If you develop your own components or patterns, it’s important to share them so that others can benefit from your work.

    What you should do

    @@ -40,6 +42,8 @@
  • share details of any new components or patterns you create or adapt (for example, by contributing to the service manual)
  • +

    For more on open standards, see point 17: Make your service interoperable.

    +

    Guidance

    NHS service manual

      @@ -48,7 +52,6 @@

    GOV.UK resources

    -

    This point reflects point 13 in the Government service standard.

    @@ -58,7 +61,7 @@
  • Talk to us on the service manual Slack channel or email the standards team at service-manual@nhs.net.
  • -

    Updated: April 2019

    +

    Updated: December 2019

    diff --git a/app/views/service-standard/16-operate-a-reliable-service.njk b/app/views/service-standard/14-operate-a-reliable-service.njk similarity index 88% rename from app/views/service-standard/16-operate-a-reliable-service.njk rename to app/views/service-standard/14-operate-a-reliable-service.njk index 7c6cd44bb..635964d49 100644 --- a/app/views/service-standard/16-operate-a-reliable-service.njk +++ b/app/views/service-standard/14-operate-a-reliable-service.njk @@ -1,4 +1,4 @@ -{% set pageTitle = '16. Operate a reliable service' %} +{% set pageTitle = '14. Operate a reliable service' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'People need the NHS 24 hours a day, every day of the year. Minimise service downtime and have a plan to deal with it when it does happen.' %} {% set noFollow = true %} @@ -30,7 +30,7 @@

    Why it's important

    -

    The public, patients and staff need to access NHS services throughout the day and night. If a service is unavailable or slow, it can mean people don't get the help they need.

    +

    The public, patients and staff need to access NHS services throughout the day and night. If a service is unavailable or slow, it can mean people do not get the help they need.

    What you should do

    Your team should be able to show that you:

    @@ -38,7 +38,7 @@
  • maximise uptime and speed of response for the online part of the service
  • deploy software changes regularly, without significant downtime
  • carry out quality assurance testing regularly
  • -
  • test the service in an environment that’s as similar to live as possible
  • +
  • test the service in an environment that's as similar to live as possible
  • have appropriate monitoring in place, together with a proportionate, sustainable plan to respond to problems identified by monitoring (given the impact of problems on users and on the NHS)
  • actively work towards fixing any organisational or contractual issues which make it difficult to maximise availability (for example, by agreeing a common set of languages, tools, and ways of working for technical staff)
  • @@ -46,7 +46,6 @@

    Guidance

    GOV.UK resources

    -

    This point reflects point 14 in the Government service standard.

    -

    Updated: April 2019

    +

    Updated: December 2019

    diff --git a/app/views/service-standard/5-support-a-culture-of-care.njk b/app/views/service-standard/15-support-a-culture-of-care.njk similarity index 76% rename from app/views/service-standard/5-support-a-culture-of-care.njk rename to app/views/service-standard/15-support-a-culture-of-care.njk index b3ee813b0..d43959f67 100644 --- a/app/views/service-standard/5-support-a-culture-of-care.njk +++ b/app/views/service-standard/15-support-a-culture-of-care.njk @@ -1,4 +1,4 @@ -{% set pageTitle = '5. Support a culture of care' %} +{% set pageTitle = '15. Support a culture of care' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Caring is the core business of the NHS. NHS services should provide a positive experience of care or help NHS staff provide a caring service.' %} {% set noFollow = true %} @@ -52,17 +52,19 @@

    NHS service manual

    See also service standard points:

    GOV.UK resources

    -

    This point isn't included in the Government service standard, but there is some relevant guidance in the GOV.UK service manual.

    +

    This point is not included in the GOV.UK service standard, but there is some relevant guidance in the GOV.UK service manual.

    @@ -75,7 +77,7 @@
  • Talk to us on the service manual Slack channel or email the standards team at service-manual@nhs.net.
  • -

    Updated: April 2019

    +

    Updated: December 2019

    diff --git a/app/views/service-standard/6-make-your-service-clinically-safe.njk b/app/views/service-standard/16-make-your-service-clinically-safe.njk similarity index 83% rename from app/views/service-standard/6-make-your-service-clinically-safe.njk rename to app/views/service-standard/16-make-your-service-clinically-safe.njk index ea525b40b..885ecf1b7 100644 --- a/app/views/service-standard/6-make-your-service-clinically-safe.njk +++ b/app/views/service-standard/16-make-your-service-clinically-safe.njk @@ -39,7 +39,7 @@
  • you have a nominated clinical safety officer - in other words, a clinician with a current professional registration who has been trained in clinical risk management and is accountable for clinical safety
  • qualified clinicians check your clinical information and make sure that it is accurate, evidence-based and clinically safe
  • you are meeting the needs of your most vulnerable users, for example, by allowing patients to request a translator or flagging safeguarding needs
  • -
  • if appropriate, you work to DCB0129 (the safety standard for manufacturers of health IT software) or DCB0160 (the standard which helps health and care organisations manage the risks of using new or changed health software) - or both
  • +
  • if appropriate, you work to DCB0129 (the safety standard for manufacturers of health IT software) or DCB0160 (the standard that helps health and care organisations manage the risks of using new or changed health software) - or both
  • your processes for developing and maintaining your service and managing live safety incidents comply with the relevant clinical safety standard
  • you have processes to make sure that any data you collect is up to date and error free
  • where appropriate, you comply with NICE's Evidence standards framework for digital health technologies
  • @@ -53,9 +53,9 @@

    NHS service manual

    See also service standard points:

    GOV.UK resources

    @@ -63,7 +63,7 @@

    Read more about this

    Other help

    @@ -73,7 +73,7 @@
  • Take up NHS Digital clinical risk management training.
  • -

    Updated: April 2019

    +

    Updated: December 2019

    diff --git a/app/views/service-standard/12-make-your-service-interoperable.njk b/app/views/service-standard/17-make-your-service-interoperable.njk similarity index 77% rename from app/views/service-standard/12-make-your-service-interoperable.njk rename to app/views/service-standard/17-make-your-service-interoperable.njk index 020ec8ed2..a33603c79 100644 --- a/app/views/service-standard/12-make-your-service-interoperable.njk +++ b/app/views/service-standard/17-make-your-service-interoperable.njk @@ -1,4 +1,4 @@ -{% set pageTitle = '12. Make your service interoperable' %} +{% set pageTitle = '17. Make your service interoperable' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'In an organisation as diverse and complex as the NHS, we need systems and services which talk to each other. Build for interoperability to share patient records and get data quickly from one place to another.' %} {% set noFollow = true %} @@ -47,10 +47,12 @@

    Guidance

    GOV.UK resources

    -

    This point reflects point 10 in the Government service standard.

    +

    In the GOV.UK service standard, open standards are part of point 13. Use and contribute to open standards, common components and patterns.

    +

    Here are some useful GOV.UK resources.

    @@ -59,19 +61,21 @@ +
  • NHS clinical information standards (NHS Digital - beta)
  • +
  • NHS digital reference data registers (NHS Digital - beta)
  • +
  • Open Government Licence (The National Archives)
  • +
  • SNOMED CD - a structured clinical vocabulary for use in an electronic health record (NHS Digital)
  • +
  • Use of FHIR-based APIs (NHS Digital - beta)
  • Other help

    -

    Updated: April 2019

    +

    Updated: December 2019

    diff --git a/app/views/service-standard/2-join-things-up-and-work-towards-solving-a-whole-problem.njk b/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk similarity index 78% rename from app/views/service-standard/2-join-things-up-and-work-towards-solving-a-whole-problem.njk rename to app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk index e6b859592..aa70b3666 100644 --- a/app/views/service-standard/2-join-things-up-and-work-towards-solving-a-whole-problem.njk +++ b/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk @@ -1,7 +1,7 @@ -{% set pageTitle = '2. Join things up and work towards solving a whole problem' %} +{% set pageTitle = '2. and 3. Work towards solving a whole problem and provide a joined up experience' %} {% set pageSection = 'NHS service standard' %} -{% set pageDescription = 'Collaborate across team, programme and organisational boundaries and create a service that meets users' needs across all channels.' %} +{% set pageDescription = 'Consider where your service fits in your users' healthcare journey and whether you can solve a whole problem or influence a wider solution. Collaborate across team, programme and organisational boundaries and create a service that meets users' needs across all channels.' %} {% set noFollow = true %} {% extends 'includes/layout.njk' %} @@ -23,8 +23,8 @@

    {{pageTitle}}

    -

    Collaborate across team, programme and organisational boundaries and create a service that meets users' needs across all channels.

    Consider where your service fits in your users' healthcare journey and whether you can solve a whole problem or influence a wider solution.

    +

    Collaborate across team, programme and organisational boundaries and create a service that meets users' needs across all channels.

    @@ -32,7 +32,8 @@

    Why it's important

    -

    Health is complex. People often don't know how health and care organisations and services fit together. It helps if you can bring things together into a journey which makes sense to users, irrespective of which organisation they "belong" to or the channel they use.

    +

    Health is complex. People often do not know how health and care organisations and services fit together. It helps if you can bring things together into a journey which makes sense to users, irrespective of which organisation they "belong" to or the channel they use.

    +

    You may not be able to fix a whole problem, but you may be able to improve it and to support or influence a wider solution.

    What you should do

    @@ -43,19 +44,18 @@
  • you are addressing any problems with internal processes, policy or legislation that make it difficult to join things up and to address a whole problem
  • you work with front line and admin staff, where appropriate, and invite them and policy people to attend user research and to contribute to decisions
  • you research, test and make changes to users’ experience of online and offline channels (for example, call centre scripts and letters)
  • -
  • you minimise the number of times users provide the same information to NHS services (while respecting users' privacy)
  • +
  • you minimise the number of times users provide the same information to NHS services (while respecting their privacy)
  • your service is viable and its scope is based on how users think - not too wide and not too narrow
  • you have considered alternatives to creating a service - for example, running a health campaign, partnering with another organisation, or making an API available - or doing nothing
  • you have built relationships with other teams and organisations to make your service more effective
  • -
  • you work in the open so that people outside the organisation know what you are doing
  • +
  • you work in the open so that people outside the organisation know what you are doing, to increase the potential for collaboration and reduce duplication of effort
  • Guidance

    GOV.UK resources

    -

    This point reflects points 2 and 3 in the Government service standard.

    @@ -70,7 +70,7 @@
  • Talk to us on the service manual Slack channel or email the standards team at service-manual@nhs.net.
  • -

    Updated: April 2019

    +

    Updated: December 2019

    diff --git a/app/views/service-standard/3-make-the-service-easy-to-use.njk b/app/views/service-standard/4-make-the-service-simple-to-use.njk similarity index 92% rename from app/views/service-standard/3-make-the-service-easy-to-use.njk rename to app/views/service-standard/4-make-the-service-simple-to-use.njk index ecc652f30..cff1ec28a 100644 --- a/app/views/service-standard/3-make-the-service-easy-to-use.njk +++ b/app/views/service-standard/4-make-the-service-simple-to-use.njk @@ -1,4 +1,4 @@ -{% set pageTitle = '3. Make the service easy to use' %} +{% set pageTitle = '4. Make the service simple to use' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Build a service that's simple to use so that people can succeed first time. Test with users to make sure it works for them.' %} {% set noFollow = true %} @@ -44,13 +44,12 @@

    Guidance

    -

    NHS service manual

    +

    NHS digital service manual

    GOV.UK resources

    -

    This point reflects point 4 in the Government service standard.

    -

    Updated: April 2019

    +

    Updated: December 2019

    diff --git a/app/views/service-standard/4-make-sure-everyone-can-use-the-service.njk b/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk similarity index 84% rename from app/views/service-standard/4-make-sure-everyone-can-use-the-service.njk rename to app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk index 03fd4d1e6..9ef35c503 100644 --- a/app/views/service-standard/4-make-sure-everyone-can-use-the-service.njk +++ b/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk @@ -1,4 +1,4 @@ -{% set pageTitle = '4. Make sure everyone can use the service' %} +{% set pageTitle = '5. Make sure everyone can use the service' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Make sure people with different physical, mental health, social, cultural or learning needs can use your service, whether it's for the public or staff.' %} {% set noFollow = true %} @@ -23,7 +23,7 @@

    {{pageTitle}}

    Make sure people with different physical, mental health, social, cultural or learning needs can use your service, whether it's for the public or staff.

    -

    Also people who don’t have access to the internet or lack the skills or confidence to use it.

    +

    Also people who do not have access to the internet or lack the skills or confidence to use it.

    @@ -39,22 +39,21 @@
    • your service meets accessibility standards for online and offline parts, including WCAG2.1 AA
    • you understand who the most vulnerable users for your service are and include them in user research, for example: people with access needs, people with low socio-economic status (D and E), older people, and black and minority ethnic people
    • -
    • you made sure you don't exclude any groups your service serves, for example because they lack digital skills or internet access, and you provide assisted digital support to cover any gaps
    • +
    • you made sure you do not exclude any groups your service serves, for example because they lack digital skills or internet access, and you provide assisted digital support to cover any gaps
    • you avoid making any groups of people feel excluded
    • you design for low digital and health literacy

    Guidance

    -

    NHS service manual

    +

    NHS digital service manual

    GOV.UK resources

    -

    This point reflects point 5 in the Government service standard.

    -

    Updated: April 2019

    +

    Updated: December 2019

    diff --git a/app/views/service-standard/8-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk b/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk similarity index 89% rename from app/views/service-standard/8-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk rename to app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk index ff69bbe7b..1c59cc836 100644 --- a/app/views/service-standard/8-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk +++ b/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk @@ -1,4 +1,4 @@ -{% set pageTitle = '8. Create a team that includes multidisciplinary skills and perspectives' %} +{% set pageTitle = '6. Create a team that includes multidisciplinary skills and perspectives' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Make sure you have the right - and diverse - skills and roles to build and operate the service.' %} {% set noFollow = true %} @@ -47,8 +47,9 @@

    Guidance

    +

    NHS service manual

    +

    See also service standard point 16: Make your service clinically safe

    GOV.UK resources

    -

    This point reflects points 6 in the Government service standard.

    -

    Updated: April 2019

    +

    Updated: December 2019

    diff --git a/app/views/service-standard/9-use-agile-ways-of-working.njk b/app/views/service-standard/7-use-agile-ways-of-working.njk similarity index 90% rename from app/views/service-standard/9-use-agile-ways-of-working.njk rename to app/views/service-standard/7-use-agile-ways-of-working.njk index 14b7c2cd8..8af35dbe0 100644 --- a/app/views/service-standard/9-use-agile-ways-of-working.njk +++ b/app/views/service-standard/7-use-agile-ways-of-working.njk @@ -1,4 +1,4 @@ -{% set pageTitle = '9. Use agile ways of working' %} +{% set pageTitle = '7. Use agile ways of working' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Make sure that the team can deliver quickly and adapt to meet users' needs.' %} {% set noFollow = true %} @@ -45,11 +45,10 @@

    Guidance

    NHS service manual

    -

    See also service standard point 10: Iterate and improve frequently.

    +

    See also service standard point 8. Iterate and improve frequently.

    GOV.UK resources

    -

    This point reflects points 7 in the Government service standard.

    - -

    Updated: April 2019

    +

    Updated: December 2019

    diff --git a/app/views/service-standard/10-iterate-and-improve-frequently.njk b/app/views/service-standard/8-iterate-and-improve-frequently.njk similarity index 82% rename from app/views/service-standard/10-iterate-and-improve-frequently.njk rename to app/views/service-standard/8-iterate-and-improve-frequently.njk index a85c32450..d4ee47862 100644 --- a/app/views/service-standard/10-iterate-and-improve-frequently.njk +++ b/app/views/service-standard/8-iterate-and-improve-frequently.njk @@ -1,4 +1,4 @@ -{% set pageTitle = '10. Iterate and improve frequently'%} +{% set pageTitle = '8. Iterate and improve frequently'%} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Make sure you have the capacity, resources and technical flexibility to iterate and improve the service frequently.' %} {% set noFollow = true %} @@ -32,21 +32,23 @@

    Why it's important

    Services are never ‘finished’. Once you have got real people using your service, you need to iterate and improve it throughout its lifetime. -

    That means more than doing basic maintenance, like fixing bugs in code or deploying security patches. It means responding to feedback and changes in user needs and behaviour, health evidence and practice, technology and policy.

    +

    That means more than doing basic maintenance, like fixing bugs in code or deploying security patches. It means responding to feedback and changes in user needs and behaviour, clinical evidence and practice, technology and policy.

    What you should do

    Your team should be able to show that you:

    • continue to research and respond to feedback, data and metrics and the changing context within which you work
    • -
    • have a process for reviewing all content and checking that it is up to date and reflects the latest health evidence - or is retired
    • +
    • have a process for reviewing all content and checking that it is up to date and reflects the latest clinical evidence - or is retired
    • understand where your priorities lie and which improvements will deliver the most value
    • have an appropriate level of resource to continue to improve the live service

    Guidance

    -

    GOV.UK resources

    -

    This point reflects points 8 in the Government service standard.

    +

    GOV.UK resources

    +

    Read more about this

    -

    Updated: April 2019

    +

    Updated: December 2019

    diff --git a/app/views/service-standard/7-respect-and-protect-users-confidentiality-and-privacy.njk b/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk similarity index 95% rename from app/views/service-standard/7-respect-and-protect-users-confidentiality-and-privacy.njk rename to app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk index 2a14aa006..decb765d1 100644 --- a/app/views/service-standard/7-respect-and-protect-users-confidentiality-and-privacy.njk +++ b/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk @@ -1,4 +1,4 @@ -{% set pageTitle = '7. Respect and protect users’ confidentiality and privacy' %} +{% set pageTitle = '9. Respect and protect users’ confidentiality and privacy' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Evaluate what data and information your service will be collecting, storing and providing.' %} {% set noFollow = true %} @@ -50,8 +50,7 @@

    Guidance

    GOV.UK resources

    -

    This point reflects point 9 in the Government service standard.

    -
      + -

      Updated: April 2019

      +

      Updated: December 2019

      diff --git a/app/views/service-standard/about.njk b/app/views/service-standard/about.njk index 43d7db110..1c7bd1dec 100644 --- a/app/views/service-standard/about.njk +++ b/app/views/service-standard/about.njk @@ -1,7 +1,7 @@ {% set pageTitle = 'About the NHS service standard' %} {% set pageSection = 'NHS service standard' %} -{% set pageDescription = 'The NHS service standard is currently a \'prototype\' - a first version. We\'re testing it with NHS teams.' %} +{% set pageDescription = 'The NHS service standard is designed to help teams meet the GOV.UK service standard in the context of health and care.' %} {% set noFollow = true %} {% extends 'includes/layout.njk' %} @@ -23,27 +23,28 @@

      {{pageTitle}}

      -

      The NHS service standard is currently a 'prototype' which we are testing with NHS digital teams and improving.

      +

      The NHS service standard is designed to help teams meet the GOV.UK service standard in the context of health and care.

      +

      A few NHS teams are assessed against the GOV.UK service standard as a condition of their spend approval or because they are running a big transactional service. Other NHS teams follow the GOV.UK service standard because it's best practice.

      -

      What's different in the NHS standard?

      -

      The standard is based on the new Government service standard (2019) but it takes account of the different needs of health service users and the complexities of health and care.

      -

      It has 16 points, 3 of them new ones for the NHS.

      -

      We've combined points 2 and 3 in the Government standard to create our point 2.

      -

      Our 3 new points are: +

      Why publish an NHS companion to the GOV.UK service standard?

      +

      This NHS companion follows the GOV.UK standard point by point, but in our user research, we found that NHS digital teams also need:

        -
      • point 5 which deals with the NHS principle of care as it affects digital services
      • -
      • point 6 which deals with clinical safety and effectiveness
      • -
      • point 12 about interoperability
      • +
      • guidance on the different needs of health service users and the complexities of health and care
      • +
      • 3 extra points that address specific issues in health and care
      • +
      • links to standards and guidance that teams working in health need to know about
      • +
      • examples drawn from the NHS
      -

      Why do we need a separate standard for the NHS?

      -

      We see the NHS standard as a companion to the Government service standard.

      -

      This is based on evidence from research with digital teams in the NHS - starting in NHS Digital but also in some other NHS organisations. We found that some teams working in health don't see the Government service standard as applying to them. Other teams say that the Government service standard doesn't take enough account of what's different in health.

      +

      The NHS service standard and the guidance in the NHS digital service manual are designed to help teams build and run services that improve health outcomes, people's experience of health and care, and the efficiency of the health service.

      + +

      What is different about the NHS?

      +

      There is a lot that is the same across Government and the NHS but this guidance also takes account of what's different in health.

      +

      For example:

      • health 'journeys' are more fragmented and multi-layered than many government services
      • @@ -53,14 +54,12 @@
      • measuring outcomes is often more complex for health
      • more products and services are commissioned locally, for example in hospital trusts, and they are more likely to rely on suppliers, long-term contracts and ‘off the shelf' solutions
      -

      The digital teams we've talked to said they wanted a standard tailored to health with guidance and examples drawn from the NHS. We also saw evidence of the power of the NHS logo to unify teams, make the standard relevant and encourage people to work to it.

      +

      In our user research, we saw evidence of the power of the NHS logo to unify teams, make the GOV.UK standard relevant and encourage people to work to it.

      -

      How we're developing it

      -

      The NHS service standard is currently a 'prototype' - a first version. We're testing it with NHS teams and will be improving it over the next few months. We'll be adding guidance, examples and case studies to the NHS digital service manual to support the standard.

      -

      Both the service standard and the service manual come from the experience of the teams at NHS Digital behind the NHS website (nhs.uk).

      -

      We're very interested in hearing what you think about the standard and how it might, or might not, help you develop digital services in health. Email us or get in touch on the service manual Slack channel.

      +

      We're very interested in hearing what you think about the NHS service standard as a companion to the GOV.UK service standard and how it might, or might not, help you develop digital services in health.

      +

      Email us or get in touch on the service manual Slack channel.

      -

      Updated: March 2019

      +

      Updated: December 2019

      diff --git a/app/views/service-standard/index.njk b/app/views/service-standard/index.njk index 4f30af428..9995058cd 100644 --- a/app/views/service-standard/index.njk +++ b/app/views/service-standard/index.njk @@ -1,5 +1,5 @@ {% set pageTitle = 'NHS service standard' %} -{% set pageDescription = 'The NHS service standard is designed to help digital teams build and run products or services which help improve health outcomes, people's experience of health and care, and the efficiency of the health service.' %} +{% set pageDescription = 'This NHS companion to the GOV.UK service standard will help you check that your service is good enough for the NHS.' %} {% set noFollow = true %} {% extends 'includes/layout.njk' %} @@ -8,101 +8,108 @@

      {{pageTitle}}

      -

      The NHS service standard is designed to help digital teams build and run services that improve health outcomes, people's experience of health and care, and the efficiency of the health service.

      -

      The standard will help you check that your service is good enough for the NHS.

      -

      Read more about the standard.

      +

      +

      This NHS companion to the GOV.UK service standard will help you check that your service is good enough for the NHS.

      + +

      The NHS service standard is designed to help teams:

      +
        +
      • meet the GOV.UK standard
      • +
      • address the different needs of health service users
      • +
      • navigate the complexities of delivering digital services in health and care
      • +
      + +

      It contains the 14 points of the GOV.UK service standard, with guidance to help teams meet them in a health context, with 3 extra points specific to health and social care.

      +

      Read more about the NHS service standard.

      - -

      A. Meeting users' needs

      +

      The GOV.UK service standard in the context of health

      1. Understand users and their needs in the context of health and care

      Take time to understand your users' clinical, practical and emotional needs - and abilities - and the problem you're trying to solve for them.

      Think about people's entire experience and the systems and processes around the product or service you're building.

      Read more about point 1.

      -

      2. Join things up and work towards solving a whole problem

      -

      Collaborate across team, programme and organisational boundaries and create a service that meets users' needs across all channels.

      +

      2. Work towards solving a whole problem for users

      Consider where your service fits in your users' healthcare journey and whether you can solve a whole problem or influence a wider solution.

      -

      Read more about point 2.

      +

      3. Provide a joined up experience across all channels

      +

      Collaborate across team, programme and organisational boundaries and create a service that meets users' needs across all channels.

      +

      Read more about points 2 and 3.

      -

      3. Make the service easy to use

      +

      4. Make the service simple to use

      Build a service that's simple to use so that people can succeed first time. Test with users to make sure it works for them.

      Healthcare journeys can be complex. Do the hard work to make things simpler.

      -

      Read more about point 3.

      +

      Read more about point 4.

      -

      4. Make sure everyone can use the service

      +

      5. Make sure everyone can use the service

      Make sure people with different physical, mental health, social, cultural or learning needs can use your service, whether it's for the public or staff.

      -

      And people who don't have access to the internet or lack the skills or confidence to use it.

      -

      Read more about point 4.

      - -

      5. Support a culture of care

      -

      Caring is the core business of the NHS. NHS services should provide a positive experience of care or help NHS staff provide a caring service.

      -

      All services should make patients, the public and staff feel valued and supported and, as far as possible, involve people in their own care.

      -

      Read more about point 5.

      - -

      6. Make your service clinically safe

      -

      Digital information, tools and services have the potential to cause patient harm.

      -

      Make sure that you actively manage any safety risks associated with your content, service and processes.

      -

      Read more about point 6.

      - -

      7. Respect and protect users' confidentiality and privacy

      -

      Evaluate what data and information your service will be collecting, storing and providing.

      -

      Identify and address security threats, legal responsibilities, confidentiality and privacy issues and risks associated with the service. Consult experts where you need to.

      -

      Read more about point 7.

      +

      And people who do not have access to the internet or lack the skills or confidence to use it.

      +

      Read more about point 5.

      -

      B. Providing a service

      - -

      8. Create a team that includes multidisciplinary skills and perspectives

      +

      6. Create a team that includes multidisciplinary skills and perspectives

      Make sure you have the right - and diverse - skills and roles to build and operate the service.

      Make as many decisions as possible in the team so that you can respond quickly to what you learn about users and their needs.

      -

      Read more about point 8.

      +

      Read more about point 6.

      -

      9. Use agile ways of working

      +

      7. Use agile ways of working

      Make sure that the team can deliver quickly and adapt to meet users' needs.

      Resource them flexibly.

      -

      Read more about point 9.

      +

      Read more about point 7.

      -

      10. Iterate and improve frequently

      +

      8. Iterate and improve frequently

      Make sure you have the capacity, resources and technical flexibility to iterate and improve the service frequently.

      Work with your organisation to make sure that you're able to focus on the improvements that have the most value.

      -

      Read more about point 10.

      +

      Read more about point 8.

      -

      11. Define what success looks like and be open about how your service is performing

      -

      Work out how your service helps improve health and well being, people's experience of health and care, and the efficiency of the health service and how you will know that you're succeeding. If you can't measure health benefits, choose other suitable indicators.

      -

      Collect performance information so that you can measure and show that the service is effective and improving.

      -

      Read more about point 11.

      +

      9. Respect and protect users' confidentiality and privacy

      +

      Evaluate what data and information your service will be collecting, storing and providing.

      +

      Identify and address security threats, legal responsibilities, confidentiality and privacy issues and risks associated with the service. Consult experts where you need to.

      +

      Read more about point 9.

      -

      C. Make smart choices about technology

      +

      10. Define what success looks like and be open about how your service is performing

      +

      Work out how your service helps improve health and well being, people's experience of health and care, and the efficiency of the health service and how you will know that you're succeeding. If you cannot measure health benefits, choose other suitable indicators.

      +

      Collect performance information across all channels so that you can measure and show that the service is effective and improving.

      +

      Read more about point 10.

      -

      12. Make your service interoperable

      -

      In an organisation as diverse and complex as the NHS, we need systems and services which talk to each other. Build for interoperability to share patient records and get data quickly from one place to another.

      -

      Read more about point 12.

      -

      13. Choose the right tools and technology

      +

      11. Choose the right tools and technology

      Choose tools and technology that let you build a good service in an efficient, cost effective way.

      Build a sustainable service which allows you to change direction in future.

      -

      Read more about point 13.

      +

      Read more about point 11.

      -

      14. Make new source code open

      -

      Make all new source code open and reusable, and publish it under appropriate licences. If you can't do this for specific subsets of the source code, provide a convincing explanation.

      -

      Read more about point 14.

      +

      12. Make new source code open

      +

      Make all new source code open and reusable, and publish it under appropriate licences. If you cannot do this for specific subsets of the source code, provide a convincing explanation.

      +

      Read more about point 12.

      -

      15. Use and contribute to common components and patterns

      -

      Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK design system. If you develop your own patterns or components, share them publicly so other people can use them.

      -

      Read more about point 15.

      +

      13. Use and contribute to open standards, common components and patterns

      +

      Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK design system.

      +

      Use open standards, and propose a new open standard if there is not one that already meets your needs.

      +

      Read more about point 13.

      -

      16. Operate a reliable service

      +

      14. Operate a reliable service

      People need the NHS 24 hours a day, every day of the year. Minimise service downtime and have a plan to deal with it when it does happen.

      -

      Read more about point 16.

      +

      Read more about point 14.

      +

      3 extra points for health and social care

      +

      15. Support a culture of care

      +

      Caring is the core business of the NHS. NHS services should provide a positive experience of care or help NHS staff provide a caring service.

      +

      All services should make patients, the public and staff feel valued and supported and, as far as possible, involve people in their own care.

      +

      Read more about point 15.

      + +

      16. Make your service clinically safe

      +

      Digital information, tools and services have the potential to cause patient harm.

      +

      Make sure that you actively manage any safety risks associated with your content, service and processes.

      +

      Read more about point 16.

      + +

      17. Make your service interoperable

      +

      In an organisation as diverse and complex as the NHS, we need systems and services which talk to each other. Build for interoperability to share patient records and get data quickly from one place to another.

      +

      Read more about point 17.

      -

      Updated: April 2019

      +

      Updated: December 2019

      From adf5013907e2d704f4a3393b57fcf070c7ed0bfd Mon Sep 17 00:00:00 2001 From: Sara Wilcox Date: Thu, 21 Nov 2019 11:43:41 +0000 Subject: [PATCH 21/49] Update service standard pages --- ...nd-their-needs-context-health-and-care.njk | 5 ++-- ...n-about-how-your-service-is-performing.njk | 16 ++++++------- .../15-support-a-culture-of-care.njk | 20 ++++++++-------- .../16-make-your-service-clinically-safe.njk | 23 +++++++++---------- .../17-make-your-service-interoperable.njk | 2 +- ...lem-and-provide-a-joined-up-experience.njk | 22 +++++++++--------- .../4-make-the-service-simple-to-use.njk | 4 ++-- ...make-sure-everyone-can-use-the-service.njk | 12 +++++----- ...tidisciplinary-skills-and-perspectives.njk | 14 +++++------ .../7-use-agile-ways-of-working.njk | 10 ++++---- .../8-iterate-and-improve-frequently.njk | 2 +- ...tect-users-confidentiality-and-privacy.njk | 20 ++++++++-------- app/views/service-standard/about.njk | 3 +++ app/views/service-standard/index.njk | 8 +++++-- 14 files changed, 84 insertions(+), 77 deletions(-) diff --git a/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk b/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk index ff5bfa1a4..51b49806a 100644 --- a/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk +++ b/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk @@ -22,7 +22,7 @@

      {{pageTitle}}

      -

      Take time to understand your users' clinical, practical and emotional needs - and abilities - and the problem you're trying to solve for them.

      +

      Take time to understand your users' clinical, practical and emotional needs - and their abilities - and the problem you're trying to solve for them.

      Think about people's entire experience and the systems and processes around the product or service you're building.

      @@ -45,7 +45,8 @@

    If you're building services for staff

    Your team should be able to show that you have:

    -
    • done user research with all relevant user groups, including frontline and back office staff
    • +
        +
      • done user research with all relevant user groups, including frontline and back office staff

      In both cases

      You should also be able to show that you:

      diff --git a/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk b/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk index 5a559bf14..f6e9a6b56 100644 --- a/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk +++ b/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk @@ -36,15 +36,15 @@

      Services funded by public money should be transparent about how they are performing.

      What you should do

      -

      Your team should be able to show that:

      +

      Your team should be able to show that you:

        -
      • you are clear from the start what your objectives are and the benefits you will be measuring
      • -
      • your benefits case considers not just the cost but also use, usability and clinical benefit
      • -
      • you have identified appropriate metrics and are tracking performance against them
      • -
      • you are able to identify not only the benefits but also potential negative impact, inappropriate use or unintended consequences -
      • you use performance data to make decisions about how to fix problems and improve the service
      • -
      • you iterate and improve your metrics and data collection practices as you learn more about user needs
      • -
      • you make performance information public
      • +
      • are clear from the start what your objectives are and the benefits you will be measuring
      • +
      • have a benefits case that considers not just the cost but also use, usability and clinical benefit
      • +
      • have identified appropriate metrics and are tracking performance against them
      • +
      • identify not only the benefits but also potential negative impact, inappropriate use or unintended consequences +
      • use performance data to make decisions about how to fix problems and improve the service
      • +
      • iterate and improve your metrics and data collection practices as you learn more about user needs
      • +
      • make performance information public

      Guidance

      diff --git a/app/views/service-standard/15-support-a-culture-of-care.njk b/app/views/service-standard/15-support-a-culture-of-care.njk index d43959f67..5e42dd4f4 100644 --- a/app/views/service-standard/15-support-a-culture-of-care.njk +++ b/app/views/service-standard/15-support-a-culture-of-care.njk @@ -22,7 +22,7 @@

      {{pageTitle}}

      -

      Caring is the core business of the NHS. NHS services should provide a positive experience of care or help NHS staff provide a caring service.

      +

      Caring is the core business of the NHS. NHS services should provide a positive experience of care and they should help NHS staff provide a caring service.

      All services should make patients, the public and staff feel valued and supported and, as far as possible, involve people in their own care.

      @@ -35,16 +35,16 @@

      We can improve people's experience of care by being inclusive and treating them with respect.

      What you should do

      -

      Your team should be able to show that:

      +

      Your team should be able to show that you:

        -
      • you listen to and understand your users' personal, cultural, social and religious needs as well as their care needs
      • -
      • you are respectful and inclusive
      • -
      • you take users' fears and concerns seriously and think carefully about their context and circumstances
      • -
      • where appropriate, you involve people in decisions about their care and respect their right to choose - for example, to book an appointment with a female member of staff or to delay treatment
      • -
      • your service balances helping users complete the task with an appropriate tone, reassurance, and clear explanations
      • -
      • you signpost to support to help people cope emotionally
      • -
      • you tell people what will happen next and, where appropriate, keep them informed and involved in the progress of their care and treatment
      • -
      • you use the most appropriate channels, including the phone or face to face contact
      • +
      • listen to and understand your users' personal, cultural, social and religious needs as well as their care needs
      • +
      • are respectful and inclusive
      • +
      • take users' fears and concerns seriously and think carefully about their context and circumstances
      • +
      • where appropriate, involve people in decisions about their care and respect their right to choose - for example, to book an appointment with a female member of staff or to delay treatment
      • +
      • balance helping users complete the task with an appropriate tone, reassurance, and clear explanations
      • +
      • signpost to support to help people cope emotionally
      • +
      • tell people what will happen next and, where appropriate, keep them informed and involved in the progress of their care and treatment
      • +
      • use the most appropriate channels, including the phone or face to face contact

      Guidance

      diff --git a/app/views/service-standard/16-make-your-service-clinically-safe.njk b/app/views/service-standard/16-make-your-service-clinically-safe.njk index 885ecf1b7..af0f63a7c 100644 --- a/app/views/service-standard/16-make-your-service-clinically-safe.njk +++ b/app/views/service-standard/16-make-your-service-clinically-safe.njk @@ -34,19 +34,18 @@

      Clinical risk management is key to creating safe digital services. Work with your clinical safety officer to consider what could go wrong, how serious it could be, and how likely it is, so that you can minimise the risk of harm.

      What you should do

      -

      Your team should be able to show that:

      +

      Your team should be able to show that you:

        -
      • you have a nominated clinical safety officer - in other words, a clinician with a current professional registration who has been trained in clinical risk management and is accountable for clinical safety
      • -
      • qualified clinicians check your clinical information and make sure that it is accurate, evidence-based and clinically safe
      • -
      • you are meeting the needs of your most vulnerable users, for example, by allowing patients to request a translator or flagging safeguarding needs
      • -
      • if appropriate, you work to DCB0129 (the safety standard for manufacturers of health IT software) or DCB0160 (the standard that helps health and care organisations manage the risks of using new or changed health software) - or both
      • -
      • your processes for developing and maintaining your service and managing live safety incidents comply with the relevant clinical safety standard
      • -
      • you have processes to make sure that any data you collect is up to date and error free
      • -
      • where appropriate, you comply with NICE's Evidence standards framework for digital health technologies
      • - -
      • if you provide online primary care services, you have registered with the Care Quality Commission
      • -
      • if your app is a medical device, you follow guidance from the Medicines and Healthcare products Regulatory Agency (MHRA)
      • -
      +
    • have a nominated clinical safety officer - in other words, a clinician with a current professional registration who has been trained in clinical risk management and is accountable for clinical safety
    • +
    • have qualified clinicians check your clinical information and make sure that it is accurate, evidence-based and clinically safe
    • +
    • meet the needs of your most vulnerable users, for example, by allowing patients to request a translator or flagging safeguarding needs
    • +
    • if appropriate, work to DCB0129 (the safety standard for manufacturers of health IT software) or DCB0160 (the standard that helps health and care organisations manage the risks of using new or changed health software), or both
    • +
    • have processes for developing and maintaining your service and managing live safety incidents that comply with the relevant clinical safety standard
    • +
    • have processes to make sure that any data you collect is up to date and error free
    • +
    • where appropriate, comply with NICE's Evidence standards framework for digital health technologies
    • +
    +

    If you provide online primary care services, you must register with the Care Quality Commission.

    +

    If your app is a medical device, you must follow guidance from the Medicines and Healthcare products Regulatory Agency (MHRA).

    Guidance

    diff --git a/app/views/service-standard/17-make-your-service-interoperable.njk b/app/views/service-standard/17-make-your-service-interoperable.njk index a33603c79..2ce14606f 100644 --- a/app/views/service-standard/17-make-your-service-interoperable.njk +++ b/app/views/service-standard/17-make-your-service-interoperable.njk @@ -41,7 +41,7 @@
  • where appropriate, you use the NHS number and NHS data registers and comply with NHS clinical information standards
  • for disease information in mortality and morbidity statistics, you use ICD-10 (the World Health Organization's International Classification of Diseases, version 10)
  • for electronic care records, you use SNOMED CT (structured clinical vocabulary)
  • -
  • if you create any data sets that could be useful to others, you publish them in an open machine readable format, under an Open Government Licence - unless they contain personally identifiable information, sensitive information, or where publishing the data would infringe the intellectual property rights of someone outside the NHS or government
  • +
  • if you create any data sets that could be useful to others, you publish them in an open machine readable format, under an Open Government Licence, unless they contain personally identifiable information, sensitive information, or where publishing the data would infringe the intellectual property rights of someone outside the NHS or government
  • Guidance

    diff --git a/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk b/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk index aa70b3666..486bc55d5 100644 --- a/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk +++ b/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk @@ -37,18 +37,18 @@

    You may not be able to fix a whole problem, but you may be able to improve it and to support or influence a wider solution.

    What you should do

    -

    Your team should be able to show that:

    +

    Your team should be able to show that you:

      -
    • you understand where the user need you're addressing fits into wider healthcare journeys or how it will join up with other things to solve a whole problem for users
    • -
    • you make it easy for users to focus on the next step in a journey or in managing their health, helping them get the right help from the right place at the right time
    • -
    • you are addressing any problems with internal processes, policy or legislation that make it difficult to join things up and to address a whole problem
    • -
    • you work with front line and admin staff, where appropriate, and invite them and policy people to attend user research and to contribute to decisions
    • -
    • you research, test and make changes to users’ experience of online and offline channels (for example, call centre scripts and letters)
    • -
    • you minimise the number of times users provide the same information to NHS services (while respecting their privacy)
    • -
    • your service is viable and its scope is based on how users think - not too wide and not too narrow
    • -
    • you have considered alternatives to creating a service - for example, running a health campaign, partnering with another organisation, or making an API available - or doing nothing
    • -
    • you have built relationships with other teams and organisations to make your service more effective
    • -
    • you work in the open so that people outside the organisation know what you are doing, to increase the potential for collaboration and reduce duplication of effort
    • +
    • understand where the user need you're addressing fits into wider healthcare journeys or how it will join up with other things to solve a whole problem for users
    • +
    • make it easy for users to focus on the next step in a journey or in managing their health, helping them get the right help from the right place at the right time
    • +
    • are addressing any problems with internal processes, policy or legislation that make it difficult to join things up and to address a whole problem
    • +
    • work with front line and admin staff, where appropriate, and invite them and policy people to attend user research and to contribute to decisions
    • +
    • research, test and make changes to users' experience of online and offline channels (for example, call centre scripts and letters)
    • +
    • minimise the number of times users provide the same information to NHS services (while respecting their privacy)
    • +
    • have a viable service with a scope that is based on how users think - not too wide and not too narrow
    • +
    • have considered alternatives to creating a service - for example, running a health campaign, partnering with another organisation, or making an API available - or doing nothing
    • +
    • have built relationships with other teams and organisations to make your service more effective
    • +
    • work in the open so that people outside the organisation know what you are doing, to increase the potential for collaboration and reduce duplication of effort

    Guidance

    diff --git a/app/views/service-standard/4-make-the-service-simple-to-use.njk b/app/views/service-standard/4-make-the-service-simple-to-use.njk index cff1ec28a..7c9696546 100644 --- a/app/views/service-standard/4-make-the-service-simple-to-use.njk +++ b/app/views/service-standard/4-make-the-service-simple-to-use.njk @@ -36,10 +36,10 @@

    What you should do

    Your team should be able to show that you:

      -
    • make sure the service helps the user to do what they need to do as simply as possible - so that people succeed first time, with the minimum of help
    • +
    • make sure the service helps the user to do what they need to do as simply as possible, so that people succeed first time, with the minimum of help
    • test for usability frequently with actual and potential users, using appropriate research techniques
    • test all the parts of the service that the user interacts with - online and offline parts (like letters)
    • -
    • design the service to work online with a range of devices that reflect users’ behaviour
    • +
    • design the service to work online with a range of devices that reflect users' behaviour
    • make the experience consistent from start to finish by using the styles, components and patterns and the content style guide in the service manual
    diff --git a/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk b/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk index 9ef35c503..43ffa4613 100644 --- a/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk +++ b/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk @@ -35,13 +35,13 @@

    Inclusive, accessible services are better for everyone. For example, using simple words helps people who are sick or stressed as well as people who have a learning disability.

    What you should do

    -

    Your team should be able to show that:

    +

    Your team should be able to show that you:

      -
    • your service meets accessibility standards for online and offline parts, including WCAG2.1 AA
    • -
    • you understand who the most vulnerable users for your service are and include them in user research, for example: people with access needs, people with low socio-economic status (D and E), older people, and black and minority ethnic people
    • -
    • you made sure you do not exclude any groups your service serves, for example because they lack digital skills or internet access, and you provide assisted digital support to cover any gaps
    • -
    • you avoid making any groups of people feel excluded
    • -
    • you design for low digital and health literacy
    • +
    • meet accessibility standards for online and offline parts, including WCAG2.1 AA
    • +
    • understand who the most vulnerable users for your service are and include them in user research, for example: people with access needs, people with low socio-economic status (D and E), older people, and black and minority ethnic people
    • +
    • make sure you do not exclude any groups your service serves, for example because they lack digital skills or internet access, and you provide assisted digital support to cover any gaps
    • +
    • avoid making any groups of people feel excluded
    • +
    • design for low digital and health literacy

    Guidance

    diff --git a/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk b/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk index 1c59cc836..9bebdeb06 100644 --- a/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk +++ b/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk @@ -36,15 +36,15 @@

    You will get most value from the broad range of roles recommended by the Government Digital Service.

    What you should do

    -

    Your team should be able to show that:

    +

    You should be able to show that your team:

      -
    • you are building your service with a multidisciplinary team that will help you achieve what you need to in each phase of development
    • -
    • the team is co-located as far as possible
    • -
    • you include people on the team with expertise in how services are delivered across all the relevant channels, and the back end systems the service will need to integrate with
    • -
    • the team has access to the specialist expertise it needs (for example clinical, legal or policy expertise - from inside or outside the organisation)
    • -
    • the team you have will help you deal with what you believe are your riskiest assumptions -
    • if the team is working with contractors and outside suppliers, you make sure it’s on a sustainable basis
    • +
    • is a multidisciplinary team that will help you achieve what you need to in each phase of development
    • +
    • is co-located as far as possible
    • +
    • includes people with expertise in how services are delivered across all the relevant channels, and the back end systems the service will need to integrate with
    • +
    • has access to the specialist expertise it needs (for example clinical, legal or policy expertise, from inside or outside the organisation)
    • +
    • will help you deal with what you believe are your riskiest assumptions
    +

    If the team is working with contractors and outside suppliers, you must make sure it’s on a sustainable basis.

    Guidance

    NHS service manual

    diff --git a/app/views/service-standard/7-use-agile-ways-of-working.njk b/app/views/service-standard/7-use-agile-ways-of-working.njk index 8af35dbe0..fa45b5e75 100644 --- a/app/views/service-standard/7-use-agile-ways-of-working.njk +++ b/app/views/service-standard/7-use-agile-ways-of-working.njk @@ -35,12 +35,12 @@

    Because you’re not specifying everything up front before you’ve developed an understanding of what users need, you will reduce the risk of delivering the wrong thing.

    What you should do

    -

    Your team should be able to show that:

    +

    Your team should be able to show that you:

      -
    • you use agile ways of working, researching, learning and changing as you go
    • -
    • your team and senior stakeholders make decisions that allow you to adapt and change
    • -
    • you make sure that the right people know what’s happening at the right level of detail
    • -
    • the team is resourced flexibly
    • +
    • use agile ways of working, researching, learning and changing as you go
    • +
    • make decisions with senior stakeholders that allow you to adapt and change
    • +
    • make sure that the right people know what’s happening at the right level of detail
    • +
    • are resourced flexibly

    Guidance

    diff --git a/app/views/service-standard/8-iterate-and-improve-frequently.njk b/app/views/service-standard/8-iterate-and-improve-frequently.njk index d4ee47862..e9fadf387 100644 --- a/app/views/service-standard/8-iterate-and-improve-frequently.njk +++ b/app/views/service-standard/8-iterate-and-improve-frequently.njk @@ -38,7 +38,7 @@

    Your team should be able to show that you:

    • continue to research and respond to feedback, data and metrics and the changing context within which you work
    • -
    • have a process for reviewing all content and checking that it is up to date and reflects the latest clinical evidence - or is retired
    • +
    • have a process for reviewing all content and checking that it is up to date and reflects the latest clinical evidence, or is retired
    • understand where your priorities lie and which improvements will deliver the most value
    • have an appropriate level of resource to continue to improve the live service
    diff --git a/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk b/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk index decb765d1..0a89d47d6 100644 --- a/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk +++ b/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk @@ -34,17 +34,17 @@

    The NHS services handles some of the most sensitive personal data. It has a legal duty to protect this information. Failing to do so would undermine public trust in the health service.

    What you should do

    -

    Your team should be able to show that:

    +

    Your team should be able to show that you:

      -
    • you collect and process user's personal information in a way that's secure and respects their privacy
    • -
    • if you manage user generated content, you have appropriate processes in place to protect the public and NHS staff
    • -
    • your service complies with the General Data Protection Regulation (GDPR)
    • -
    • you are aware of and, if appropriate, comply with NHS specific guidance on data security and information governance
    • -
    • you actively identify security and privacy threats to the service and have a robust, proportionate approach to securing information and managing fraud risks
    • -
    • you have a plan and budget that lets you manage security during the life of the service (for example, by responding to new threats, putting controls in place and applying security patches to software)
    • -
    • if your service needs identity assurance and authentication, you use the NHS login and NHS identity programme
    • -
    • you work with business and information risk teams (for example, senior information risk owners and information asset owners) to make sure the service meets security requirements and regulations without putting delivery at risk
    • -
    • you carry out appropriate vulnerability and penetration testing
    • +
    • collect and process user's personal information in a way that's secure and respects their privacy
    • +
    • have appropriate processes in place to protect the public and NHS staff, for example, if you manage user generated content
    • +
    • comply with the General Data Protection Regulation (GDPR)
    • +
    • are aware of and, if appropriate, comply with NHS specific guidance on data security and information governance
    • +
    • actively identify security and privacy threats to the service and have a robust, proportionate approach to securing information and managing fraud risks
    • +
    • have a plan and budget that lets you manage security during the life of the service (for example, by responding to new threats, putting controls in place and applying security patches to software)
    • +
    • use the NHS login and NHS identity programme, if your service needs identity assurance and authentication
    • +
    • work with business and information risk teams (for example, senior information risk owners and information asset owners) to make sure the service meets security requirements and regulations without putting delivery at risk
    • +
    • carry out appropriate vulnerability and penetration testing

    Guidance

    diff --git a/app/views/service-standard/about.njk b/app/views/service-standard/about.njk index 1c7bd1dec..3c5577570 100644 --- a/app/views/service-standard/about.njk +++ b/app/views/service-standard/about.njk @@ -24,6 +24,9 @@

    {{pageTitle}}

    The NHS service standard is designed to help teams meet the GOV.UK service standard in the context of health and care.

    + +

    It is in 'beta', which means that we think it's good enough to share but we're still testing it.

    +
    diff --git a/app/views/service-standard/index.njk b/app/views/service-standard/index.njk index 9995058cd..68a66cf3f 100644 --- a/app/views/service-standard/index.njk +++ b/app/views/service-standard/index.njk @@ -11,6 +11,10 @@

    This NHS companion to the GOV.UK service standard will help you check that your service is good enough for the NHS.

    +

    It is in 'beta', which means that we think it's good enough to share but we're still testing it.

    ​ + + +

    The NHS service standard is designed to help teams:

    • meet the GOV.UK standard
    • @@ -28,7 +32,7 @@

      The GOV.UK service standard in the context of health

      1. Understand users and their needs in the context of health and care

      -

      Take time to understand your users' clinical, practical and emotional needs - and abilities - and the problem you're trying to solve for them.

      +

      Take time to understand your users' clinical, practical and emotional needs - and their abilities - and the problem you're trying to solve for them.

      Think about people's entire experience and the systems and processes around the product or service you're building.

      Read more about point 1.

      @@ -96,7 +100,7 @@

      3 extra points for health and social care

      15. Support a culture of care

      -

      Caring is the core business of the NHS. NHS services should provide a positive experience of care or help NHS staff provide a caring service.

      +

      Caring is the core business of the NHS. NHS services should provide a positive experience of care and they should help NHS staff provide a caring service.

      All services should make patients, the public and staff feel valued and supported and, as far as possible, involve people in their own care.

      Read more about point 15.

      From 7dfa0df2f391617e6b796f68d6e0473915011b2d Mon Sep 17 00:00:00 2001 From: davidhunter08 Date: Fri, 22 Nov 2019 16:21:58 +0000 Subject: [PATCH 22/49] update service standard pages --- app/styles/app/_app-reading-width.scss | 6 +- app/styles/app/_featured-list.scss | 8 +- app/styles/main.scss | 41 ++- app/views/content/links.njk | 2 +- app/views/design-principles/index.njk | 2 +- app/views/includes/app-layout.njk | 3 + app/views/includes/layout.njk | 15 + ...nd-their-needs-context-health-and-care.njk | 113 +++--- ...n-about-how-your-service-is-performing.njk | 114 +++--- ...-choose-the-right-tools-and-technology.njk | 110 +++--- .../12-make-new-source-code-open.njk | 100 +++-- ...andards-common-components-and-patterns.njk | 85 ++--- .../14-operate-a-reliable-service.njk | 80 ++-- .../15-support-a-culture-of-care.njk | 116 +++--- .../16-make-your-service-clinically-safe.njk | 122 +++---- .../17-make-your-service-interoperable.njk | 112 +++--- ...lem-and-provide-a-joined-up-experience.njk | 114 +++--- .../4-make-the-service-simple-to-use.njk | 36 +- ...make-sure-everyone-can-use-the-service.njk | 118 +++--- ...tidisciplinary-skills-and-perspectives.njk | 35 +- .../7-use-agile-ways-of-working.njk | 36 +- .../8-iterate-and-improve-frequently.njk | 34 +- ...tect-users-confidentiality-and-privacy.njk | 110 +++--- app/views/service-standard/_breadcrumb.njk | 10 + app/views/service-standard/about.njk | 95 ++--- app/views/service-standard/index.njk | 342 ++++++++++++------ 26 files changed, 926 insertions(+), 1033 deletions(-) create mode 100644 app/views/service-standard/_breadcrumb.njk diff --git a/app/styles/app/_app-reading-width.scss b/app/styles/app/_app-reading-width.scss index 029374dd5..1b191bda7 100644 --- a/app/styles/app/_app-reading-width.scss +++ b/app/styles/app/_app-reading-width.scss @@ -10,7 +10,7 @@ .app-component-reading-width { h1 { - max-width: 14em; + max-width: 14.5em; } h2 { @@ -33,6 +33,10 @@ max-width: 37em; } + .nhsuk-body-s { + max-width: 47em; + } + .app-example, .nhsuk-table, .app-colour-list, diff --git a/app/styles/app/_featured-list.scss b/app/styles/app/_featured-list.scss index 07bf781b3..4b55ba123 100644 --- a/app/styles/app/_featured-list.scss +++ b/app/styles/app/_featured-list.scss @@ -8,25 +8,25 @@ .featured-list { list-style: none; - margin: nhsuk-spacing(7) 0 nhsuk-spacing(5); + margin: nhsuk-spacing(4) 0 nhsuk-spacing(5); padding-left: 0; } @include mq($from: tablet) { .featured-list { - margin: 96px 0 nhsuk-spacing(9); + margin: nhsuk-spacing(6) 0 nhsuk-spacing(5); } } .featured-list--item { - margin-bottom: nhsuk-spacing(6); + margin-bottom: nhsuk-spacing(5); } @include mq($from: tablet) { .featured-list--item { display: -ms-flexbox; // sass-lint:disable-line no-duplicate-properties display: flex; // sass-lint:disable-line no-duplicate-properties - margin-bottom: nhsuk-spacing(9); + margin-bottom: nhsuk-spacing(6); padding-left: nhsuk-spacing(9); } } diff --git a/app/styles/main.scss b/app/styles/main.scss index d0c8964e9..2319436b3 100755 --- a/app/styles/main.scss +++ b/app/styles/main.scss @@ -42,7 +42,8 @@ // Frontend override // Should be refactored into the frontend // The font weight should be 400 by default -.nhsuk-body-m { +.nhsuk-body-m, +.nhsuk-body-s { font-weight: 400; } @@ -53,3 +54,41 @@ margin-bottom: nhsuk-spacing(3) + nhsuk-spacing(1); } } + +// Beta banner +.app-beta { + background: $color_nhsuk-white; + border: 1px solid $color_nhsuk-grey-5; + padding: nhsuk-spacing(2) 0; +} + +.app-beta__container { + @include mq($until: desktop) { + position: relative; + } +} + +.app-beta__content { + display: table; + margin-bottom: 0; +} + +.app-beta__tag { + margin-right: nhsuk-spacing(2); +} + +.app-beta__text { + @include nhsuk-font($size: 16, $line-height: 1.2); + display: table-cell; + padding-top: 2px; + vertical-align: baseline; +} + +// Lede text +h1 + .nhsuk-lede-text { + margin-top: - nhsuk-spacing(3); +} + +.nhsuk-lede-text + .app-lede-text { + margin-top: - nhsuk-spacing(4); +} diff --git a/app/views/content/links.njk b/app/views/content/links.njk index d71f2cb64..ba77f59fb 100644 --- a/app/views/content/links.njk +++ b/app/views/content/links.njk @@ -69,7 +69,7 @@

      Round up values over 1MB to 2 decimal places to keep it as accurate as possible.

      Round up values under 1MB to the nearest KB. For example, round up 835.74KB to 836KB.

      -
      +

      Updated: November 2019

      diff --git a/app/views/design-principles/index.njk b/app/views/design-principles/index.njk index 1c999d7e3..fdebfd33a 100644 --- a/app/views/design-principles/index.njk +++ b/app/views/design-principles/index.njk @@ -9,7 +9,7 @@

      Download design principles poster PDF, 177kb

      -
    -

    Other help

    - +

    Read more about this

    + -

    Updated: December 2019

    +

    Other help

    + - +
    +

    Updated: December 2019

    - + {% endblock %} diff --git a/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk b/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk index f6e9a6b56..35363c69e 100644 --- a/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk +++ b/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk @@ -1,77 +1,59 @@ {% set pageTitle = '10. Define what success looks like and be open about how your service is performing' %} {% set pageSection = 'NHS service standard' %} -{% set pageDescription = 'Work out how your service helps improve health and well being, people's experience of health and care, and the efficiency of the health service and how you will know that you're succeeding.' %} +{% set pageDescription = 'Work out how your service helps improve health and well being, people\'s experience of health and care, and the efficiency of the health service and how you will know that you\'re succeeding.' %} +{% set pageSubDescription = 'Collect performance information across all channels so that you can measure and show that the service is effective and improving.' %} {% set noFollow = true %} +{% set beta = 'true' %} -{% extends 'includes/layout.njk' %} +{% extends 'includes/app-layout.njk' %} {% block breadcrumb %} -{{ breadcrumb({ - items: [ - { - href: "/service-manual/", - text: "Home" - } - ], - href: "/service-manual/service-standard", - text: "NHS service standard" -}) }} + {% include 'service-standard/_breadcrumb.njk' %} {% endblock %} -{% block body %} -
    -
    -

    {{pageTitle}}

    -

    Work out how your service helps improve health and well being, people's experience of health and care, and the efficiency of the health service and how you will know that you're succeeding. If you cannot measure health benefits, choose other suitable indicators.

    -

    Collect performance information across all channels so that you can measure and show that the service is effective and improving.

    +{% block bodyContent %} + +

    Why it's important

    +

    Having clear objectives, a definition of what success looks like and appropriate metrics means that you’ll know whether the service is solving the problem it’s meant to solve.

    +

    Collecting the right information will alert you to improvements you need to make and help you know if changes have the effect you intend.

    +

    Services funded by public money should be transparent about how they are performing.

    + +

    What you should do

    +

    Your team should be able to show that you:

    +
      +
    • are clear from the start what your objectives are and the benefits you will be measuring
    • +
    • have a benefits case that considers not just the cost but also use, usability and clinical benefit
    • +
    • have identified appropriate metrics and are tracking performance against them
    • +
    • identify not only the benefits but also potential negative impact, inappropriate use or unintended consequences +
    • use performance data to make decisions about how to fix problems and improve the service
    • +
    • iterate and improve your metrics and data collection practices as you learn more about user needs
    • +
    • make performance information public
    • +
    + +

    Guidance

    + +

    GOV.UK resources

    + + +

    Read more about this

    + + +

    Other help

    + + +
    +

    Updated: December 2019

    -
    -
    -
    - -

    Why it's important

    -

    Having clear objectives, a definition of what success looks like and appropriate metrics means that you’ll know whether the service is solving the problem it’s meant to solve.

    -

    Collecting the right information will alert you to improvements you need to make and help you know if changes have the effect you intend.

    -

    Services funded by public money should be transparent about how they are performing.

    - -

    What you should do

    -

    Your team should be able to show that you:

    -
      -
    • are clear from the start what your objectives are and the benefits you will be measuring
    • -
    • have a benefits case that considers not just the cost but also use, usability and clinical benefit
    • -
    • have identified appropriate metrics and are tracking performance against them
    • -
    • identify not only the benefits but also potential negative impact, inappropriate use or unintended consequences -
    • use performance data to make decisions about how to fix problems and improve the service
    • -
    • iterate and improve your metrics and data collection practices as you learn more about user needs
    • -
    • make performance information public
    • -
    - -

    Guidance

    - -

    GOV.UK resources

    - - -

    Read more about this

    - - -

    Other help

    - - -

    Updated: December 2019

    - -
    -
    -
    {% endblock %} diff --git a/app/views/service-standard/11-choose-the-right-tools-and-technology.njk b/app/views/service-standard/11-choose-the-right-tools-and-technology.njk index 1fce67f1c..fc83e70ac 100644 --- a/app/views/service-standard/11-choose-the-right-tools-and-technology.njk +++ b/app/views/service-standard/11-choose-the-right-tools-and-technology.njk @@ -1,76 +1,58 @@ {% set pageTitle = '11. Choose the right tools and technology' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Choose tools and technology that let you build a good service in an efficient, cost effective way.' %} +{% set pageSubDescription = 'Build a sustainable service which allows you to change direction in future.' %} {% set noFollow = true %} +{% set beta = 'true' %} -{% extends 'includes/layout.njk' %} +{% extends 'includes/app-layout.njk' %} {% block breadcrumb %} -{{ breadcrumb({ - items: [ - { - href: "/service-manual/", - text: "Home" - } - ], - href: "/service-manual/service-standard", - text: "NHS service standard" -}) }} + {% include 'service-standard/_breadcrumb.njk' %} {% endblock %} -{% block body %} -
    -
    -

    {{pageTitle}}

    -

    Choose tools and technology that let you build a good service in an efficient, cost effective way.

    -

    Build a sustainable service which allows you to change direction in future.

    +{% block bodyContent %} + +

    Why it's important

    +

    When you make a decision about technology, you’re making a significant investment. The choices you make will have a huge impact on your ability to create, iterate and operate the service in a flexible, sustainable way.

    + +

    What you should do

    +

    When considering technical architecture, choice of programming languages, development toolchain and other technology choices, your team should be able to show that you:

    +
      +
    • use appropriate tools and technologies to create and operate a good service in a cost effective way - for example, by automating things where possible
    • +
    • use HTML5 by default
    • +
    • have made good decisions about what technology to build and what to buy
    • +
    • understand tech decisions that have been made outside your team and challenge these decisions where it will improve the service
    • +
    • understand total cost of ownership of the technology and have kept the ability to make different choices in future - for example, reducing the chances of getting locked into contracts for specific tools and suppliers by using open standards
    • +
    • use standard NHS technology components where possible, for example the NHS login for identity assurance
    • +
    • have an effective approach to managing any legacy technology the service integrates with or depends on
    • +
    + +

    Guidance

    + +

    GOV.UK resources

    + + +

    Read more about this

    + + +

    Other help

    + + +
    +

    Updated: December 2019

    -
    -
    -
    - -

    Why it's important

    -

    When you make a decision about technology, you’re making a significant investment. The choices you make will have a huge impact on your ability to create, iterate and operate the service in a flexible, sustainable way.

    - -

    What you should do

    -

    When considering technical architecture, choice of programming languages, development toolchain and other technology choices, your team should be able to show that you:

    -
      -
    • use appropriate tools and technologies to create and operate a good service in a cost effective way - for example, by automating things where possible
    • -
    • use HTML5 by default
    • -
    • have made good decisions about what technology to build and what to buy
    • -
    • understand tech decisions that have been made outside your team and challenge these decisions where it will improve the service
    • -
    • understand total cost of ownership of the technology and have kept the ability to make different choices in future - for example, reducing the chances of getting locked into contracts for specific tools and suppliers by using open standards
    • -
    • use standard NHS technology components where possible, for example the NHS login for identity assurance
    • -
    • have an effective approach to managing any legacy technology the service integrates with or depends on
    • -
    - -

    Guidance

    - -

    GOV.UK resources

    - - -

    Read more about this

    - - -

    Other help

    - - -

    Updated: December 2019

    - -
    -
    -
    {% endblock %} diff --git a/app/views/service-standard/12-make-new-source-code-open.njk b/app/views/service-standard/12-make-new-source-code-open.njk index 18b0cde77..6ff8cc94d 100644 --- a/app/views/service-standard/12-make-new-source-code-open.njk +++ b/app/views/service-standard/12-make-new-source-code-open.njk @@ -2,72 +2,54 @@ {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Make all new source code open and reusable, and publish it under appropriate licences.' %} {% set noFollow = true %} +{% set beta = 'true' %} -{% extends 'includes/layout.njk' %} +{% extends 'includes/app-layout.njk' %} {% block breadcrumb %} -{{ breadcrumb({ - items: [ - { - href: "/service-manual/", - text: "Home" - } - ], - href: "/service-manual/service-standard", - text: "NHS service standard" -}) }} + {% include 'service-standard/_breadcrumb.njk' %} {% endblock %} -{% block body %} -
    -
    -

    {{pageTitle}}

    -

    Make all new source code open and reusable, and publish it under appropriate licences. If you cannot do this for specific subsets of the source code, provide a convincing explanation.

    -
    -
    - -
    -
    - -

    Why it's important

    -

    Public services are built with public money. So unless there’s a good reason not to, the code they’re based should be made available for other people to reuse and build on.

    -

    Open source code can save teams duplicating effort and help them build better services faster. And publishing source code under an open licence means that you’re less likely to get locked in to working with a single supplier.

    - -

    What you should do

    -

    Your team should be able to show that you:

    -
      -
    • have written code in the open from the start, and publish it in an open repository - minus any sensitive information, like secret keys and credentials
    • -
    • keep ownership of the intellectual property of new source code that's created as part of the service, and make it available for reuse under an open licence
    • -
    -

    There are a few cases when you should not publish code in the open. For example, code that relates to a sensitive government policy that hasn’t been announced yet.

    +{% block bodyContent %} -

    Guidance

    +

    Why it's important

    +

    Public services are built with public money. So unless there’s a good reason not to, the code they’re based should be made available for other people to reuse and build on.

    +

    Open source code can save teams duplicating effort and help them build better services faster. And publishing source code under an open licence means that you’re less likely to get locked in to working with a single supplier.

    -

    NHS service manual

    -
    +

    There are a few cases when you should not publish code in the open. For example, code that relates to a sensitive government policy that hasn’t been announced yet.

    + +

    Guidance

    + +

    NHS service manual

    + + +

    GOV.UK resources

    + + +

    Read more about this

    + + +

    Other help

    + + +
    +

    Updated: December 2019

    -
    + {% endblock %} diff --git a/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk b/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk index a4dab0cd7..5a3b6bdd2 100644 --- a/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk +++ b/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk @@ -1,69 +1,50 @@ {% set pageTitle = '13. Use and contribute to open standards, common components and patterns' %} {% set pageSection = 'NHS service standard' %} -{% set pageDescription = 'Use open standards and tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK design system.' %} +{% set pageDescription = 'Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK design system.' %} +{% set pageSubDescription = 'Use open standards, and propose a new open standard if there is not one that already meets your needs.' %} {% set noFollow = true %} +{% set beta = 'true' %} -{% extends 'includes/layout.njk' %} +{% extends 'includes/app-layout.njk' %} {% block breadcrumb %} -{{ breadcrumb({ - items: [ - { - href: "/service-manual/", - text: "Home" - } - ], - href: "/service-manual/service-standard", - text: "NHS service standard" -}) }} + {% include 'service-standard/_breadcrumb.njk' %} {% endblock %} -{% block body %} -
    -
    -

    {{pageTitle}}

    -

    Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK design system.

    +{% block bodyContent %} -

    Use open standards, and propose a new open standard if there is not one that already meets your needs.

    -
    -
    - -
    -
    - -

    Why it's important

    -

    Using common components and patterns means you do not have to solve problems that have already been solved. By using a component or pattern that’s already been extensively tested, you can provide users with a good experience in a cost effective way.

    -

    If you develop your own components or patterns, it’s important to share them so that others can benefit from your work.

    +

    Why it's important

    +

    Using common components and patterns means you do not have to solve problems that have already been solved. By using a component or pattern that’s already been extensively tested, you can provide users with a good experience in a cost effective way.

    +

    If you develop your own components or patterns, it’s important to share them so that others can benefit from your work.

    -

    What you should do

    -

    Your team should be able to show that you:

    -
      -
    • build on common NHS styles, patterns and components
    • -
    • share details of any new components or patterns you create or adapt (for example, by contributing to the service manual)
    • -
    +

    What you should do

    +

    Your team should be able to show that you:

    +
      +
    • build on common NHS styles, patterns and components
    • +
    • share details of any new components or patterns you create or adapt (for example, by contributing to the service manual)
    • +
    -

    For more on open standards, see point 17: Make your service interoperable.

    +

    For more on open standards, see point 17: Make your service interoperable.

    -

    Guidance

    -

    NHS service manual

    - +

    Guidance

    +

    NHS service manual

    + -

    GOV.UK resources

    - +

    GOV.UK resources

    + -

    Other help

    - +

    Other help

    + -

    Updated: December 2019

    - -
    +
    +

    Updated: December 2019

    -
    + {% endblock %} diff --git a/app/views/service-standard/14-operate-a-reliable-service.njk b/app/views/service-standard/14-operate-a-reliable-service.njk index 635964d49..77356572a 100644 --- a/app/views/service-standard/14-operate-a-reliable-service.njk +++ b/app/views/service-standard/14-operate-a-reliable-service.njk @@ -2,65 +2,47 @@ {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'People need the NHS 24 hours a day, every day of the year. Minimise service downtime and have a plan to deal with it when it does happen.' %} {% set noFollow = true %} +{% set beta = 'true' %} -{% extends 'includes/layout.njk' %} +{% extends 'includes/app-layout.njk' %} {% block breadcrumb %} -{{ breadcrumb({ - items: [ - { - href: "/service-manual/", - text: "Home" - } - ], - href: "/service-manual/service-standard", - text: "NHS service standard" -}) }} + {% include 'service-standard/_breadcrumb.njk' %} {% endblock %} -{% block body %} -
    -
    -

    {{pageTitle}}

    -

    People need the NHS 24 hours a day, every day of the year. Minimise service downtime and have a plan to deal with it when it does happen.

    -
    -
    - -
    -
    - -

    Why it's important

    -

    The public, patients and staff need to access NHS services throughout the day and night. If a service is unavailable or slow, it can mean people do not get the help they need.

    - -

    What you should do

    -

    Your team should be able to show that you:

    -
      -
    • maximise uptime and speed of response for the online part of the service
    • -
    • deploy software changes regularly, without significant downtime
    • -
    • carry out quality assurance testing regularly
    • -
    • test the service in an environment that's as similar to live as possible
    • -
    • have appropriate monitoring in place, together with a proportionate, sustainable plan to respond to problems identified by monitoring (given the impact of problems on users and on the NHS)
    • -
    • actively work towards fixing any organisational or contractual issues which make it difficult to maximise availability (for example, by agreeing a common set of languages, tools, and ways of working for technical staff)
    • -
    +{% block bodyContent %} -

    Guidance

    +

    Why it's important

    +

    The public, patients and staff need to access NHS services throughout the day and night. If a service is unavailable or slow, it can mean people do not get the help they need.

    -

    GOV.UK resources

    -
    +
    +

    Updated: December 2019

    -
    + {% endblock %} diff --git a/app/views/service-standard/15-support-a-culture-of-care.njk b/app/views/service-standard/15-support-a-culture-of-care.njk index 5e42dd4f4..f1816afb4 100644 --- a/app/views/service-standard/15-support-a-culture-of-care.njk +++ b/app/views/service-standard/15-support-a-culture-of-care.njk @@ -1,85 +1,67 @@ {% set pageTitle = '15. Support a culture of care' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Caring is the core business of the NHS. NHS services should provide a positive experience of care or help NHS staff provide a caring service.' %} +{% set pageSubDescription = 'All services should make patients, the public and staff feel valued and supported and, as far as possible, involve people in their own care.' %} {% set noFollow = true %} +{% set beta = 'true' %} -{% extends 'includes/layout.njk' %} +{% extends 'includes/app-layout.njk' %} {% block breadcrumb %} -{{ breadcrumb({ - items: [ - { - href: "/service-manual/", - text: "Home" - } - ], - href: "/service-manual/service-standard", - text: "NHS service standard" -}) }} + {% include 'service-standard/_breadcrumb.njk' %} {% endblock %} -{% block body %} -
    -
    -

    {{pageTitle}}

    -

    Caring is the core business of the NHS. NHS services should provide a positive experience of care and they should help NHS staff provide a caring service.

    -

    All services should make patients, the public and staff feel valued and supported and, as far as possible, involve people in their own care.

    -
    -
    - -
    -
    +{% block bodyContent %} -

    Why it's important

    -

    Digital services are not excluded from the NHS commitment to care and compassion. Small things make a difference when people are, for example, sick or stressed, grieving or dying.

    -

    We can improve people's experience of care by being inclusive and treating them with respect.

    +

    Why it's important

    +

    Digital services are not excluded from the NHS commitment to care and compassion. Small things make a difference when people are, for example, sick or stressed, grieving or dying.

    +

    We can improve people's experience of care by being inclusive and treating them with respect.

    -

    What you should do

    -

    Your team should be able to show that you:

    -
      -
    • listen to and understand your users' personal, cultural, social and religious needs as well as their care needs
    • -
    • are respectful and inclusive
    • -
    • take users' fears and concerns seriously and think carefully about their context and circumstances
    • -
    • where appropriate, involve people in decisions about their care and respect their right to choose - for example, to book an appointment with a female member of staff or to delay treatment
    • -
    • balance helping users complete the task with an appropriate tone, reassurance, and clear explanations
    • -
    • signpost to support to help people cope emotionally
    • -
    • tell people what will happen next and, where appropriate, keep them informed and involved in the progress of their care and treatment
    • -
    • use the most appropriate channels, including the phone or face to face contact
    • -
    +

    What you should do

    +

    Your team should be able to show that you:

    +
      +
    • listen to and understand your users' personal, cultural, social and religious needs as well as their care needs
    • +
    • are respectful and inclusive
    • +
    • take users' fears and concerns seriously and think carefully about their context and circumstances
    • +
    • where appropriate, involve people in decisions about their care and respect their right to choose - for example, to book an appointment with a female member of staff or to delay treatment
    • +
    • balance helping users complete the task with an appropriate tone, reassurance, and clear explanations
    • +
    • signpost to support to help people cope emotionally
    • +
    • tell people what will happen next and, where appropriate, keep them informed and involved in the progress of their care and treatment
    • +
    • use the most appropriate channels, including the phone or face to face contact
    • +
    -

    Guidance

    +

    Guidance

    -

    NHS service manual

    - -

    See also service standard points:

    - -

    GOV.UK resources

    -

    This point is not included in the GOV.UK service standard, but there is some relevant guidance in the GOV.UK service manual.

    - -

    Read more about this

    - -

    Other help

    - +

    GOV.UK resources

    +

    This point is not included in the GOV.UK service standard, but there is some relevant guidance in the GOV.UK service manual.

    + +

    Read more about this

    + +

    Other help

    + -

    Updated: December 2019

    - -
    +
    +

    Updated: December 2019

    -
    + {% endblock %} diff --git a/app/views/service-standard/16-make-your-service-clinically-safe.njk b/app/views/service-standard/16-make-your-service-clinically-safe.njk index af0f63a7c..689348e09 100644 --- a/app/views/service-standard/16-make-your-service-clinically-safe.njk +++ b/app/views/service-standard/16-make-your-service-clinically-safe.njk @@ -1,80 +1,62 @@ -{% set pageTitle = '6. Make your service clinically safe' %} +{% set pageTitle = '16. Make your service clinically safe' %} {% set pageSection = 'NHS service standard' %} -{% set pageDescription = 'Make sure that you actively manage any safety risks associated with your content, service and processes.' %} +{% set pageDescription = 'Digital information, tools and services have the potential to cause patient harm.' %} +{% set pageSubDescription = 'Make sure that you actively manage any safety risks associated with your content, service and processes.' %} {% set noFollow = true %} +{% set beta = 'true' %} -{% extends 'includes/layout.njk' %} +{% extends 'includes/app-layout.njk' %} {% block breadcrumb %} -{{ breadcrumb({ - items: [ - { - href: "/service-manual/", - text: "Home" - } - ], - href: "/service-manual/service-standard", - text: "NHS service standard" -}) }} + {% include 'service-standard/_breadcrumb.njk' %} {% endblock %} -{% block body %} -
    -
    -

    {{pageTitle}}

    -

    Digital information, tools and services have the potential to cause patient harm.

    -

    Make sure that you actively manage any safety risks associated with your content, service and processes.

    -
    -
    - -
    -
    - -

    Why it's important

    -

    Clinical risk management is key to creating safe digital services. Work with your clinical safety officer to consider what could go wrong, how serious it could be, and how likely it is, so that you can minimise the risk of harm.

    - -

    What you should do

    -

    Your team should be able to show that you:

    -
      -
    • have a nominated clinical safety officer - in other words, a clinician with a current professional registration who has been trained in clinical risk management and is accountable for clinical safety
    • -
    • have qualified clinicians check your clinical information and make sure that it is accurate, evidence-based and clinically safe
    • -
    • meet the needs of your most vulnerable users, for example, by allowing patients to request a translator or flagging safeguarding needs
    • -
    • if appropriate, work to DCB0129 (the safety standard for manufacturers of health IT software) or DCB0160 (the standard that helps health and care organisations manage the risks of using new or changed health software), or both
    • -
    • have processes for developing and maintaining your service and managing live safety incidents that comply with the relevant clinical safety standard
    • -
    • have processes to make sure that any data you collect is up to date and error free
    • -
    • where appropriate, comply with NICE's Evidence standards framework for digital health technologies
    • -
    -

    If you provide online primary care services, you must register with the Care Quality Commission.

    -

    If your app is a medical device, you must follow guidance from the Medicines and Healthcare products Regulatory Agency (MHRA).

    - -

    Guidance

    - -

    NHS service manual

    -

    See also service standard points:

    -
    +

    If you provide online primary care services, you must register with the Care Quality Commission.

    +

    If your app is a medical device, you must follow guidance from the Medicines and Healthcare products Regulatory Agency (MHRA).

    + +

    Guidance

    + +

    NHS service manual

    +

    See also service standard points:

    + + +

    GOV.UK resources

    +

    This point is not in the Government service standard.

    +

    Read more about this

    + +

    Other help

    + + +
    +

    Updated: December 2019

    -
    + {% endblock %} diff --git a/app/views/service-standard/17-make-your-service-interoperable.njk b/app/views/service-standard/17-make-your-service-interoperable.njk index 2ce14606f..0e7f3c8e7 100644 --- a/app/views/service-standard/17-make-your-service-interoperable.njk +++ b/app/views/service-standard/17-make-your-service-interoperable.njk @@ -2,82 +2,64 @@ {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'In an organisation as diverse and complex as the NHS, we need systems and services which talk to each other. Build for interoperability to share patient records and get data quickly from one place to another.' %} {% set noFollow = true %} +{% set beta = 'true' %} -{% extends 'includes/layout.njk' %} +{% extends 'includes/app-layout.njk' %} {% block breadcrumb %} -{{ breadcrumb({ - items: [ - { - href: "/service-manual/", - text: "Home" - } - ], - href: "/service-manual/service-standard", - text: "NHS service standard" -}) }} + {% include 'service-standard/_breadcrumb.njk' %} {% endblock %} -{% block body %} -
    -
    -

    {{pageTitle}}

    -

    In an organisation as diverse and complex as the NHS, we need systems and services which talk to each other. Build for interoperability to share patient records and get data quickly from one place to another.

    -
    -
    - -
    -
    +{% block bodyContent %} -

    Why it's important

    -

    Connected systems make it easier for the public and health professionals to access and share the information they need. Interoperability helps make sure that data is communicated accurately and quickly and that patients get seamless care.

    +

    Why it's important

    +

    Connected systems make it easier for the public and health professionals to access and share the information they need. Interoperability helps make sure that data is communicated accurately and quickly and that patients get seamless care.

    -

    What you should do

    -

    Your team should be able to show that:

    -
      -
    • you work to open standards and the Technology Code of Practice
    • -
    • you maximise flexibility and make content, tools and services available through well-designed APIs to reach more people
    • -
    • you use agreed FIHR-based APIs to join up care for patients
    • -
    • where appropriate, you use the NHS number and NHS data registers and comply with NHS clinical information standards
    • -
    • for disease information in mortality and morbidity statistics, you use ICD-10 (the World Health Organization's International Classification of Diseases, version 10)
    • -
    • for electronic care records, you use SNOMED CT (structured clinical vocabulary)
    • -
    • if you create any data sets that could be useful to others, you publish them in an open machine readable format, under an Open Government Licence, unless they contain personally identifiable information, sensitive information, or where publishing the data would infringe the intellectual property rights of someone outside the NHS or government
    • -
    +

    What you should do

    +

    Your team should be able to show that:

    +
      +
    • you work to open standards and the Technology Code of Practice
    • +
    • you maximise flexibility and make content, tools and services available through well-designed APIs to reach more people
    • +
    • you use agreed FIHR-based APIs to join up care for patients
    • +
    • where appropriate, you use the NHS number and NHS data registers and comply with NHS clinical information standards
    • +
    • for disease information in mortality and morbidity statistics, you use ICD-10 (the World Health Organization's International Classification of Diseases, version 10)
    • +
    • for electronic care records, you use SNOMED CT (structured clinical vocabulary)
    • +
    • if you create any data sets that could be useful to others, you publish them in an open machine readable format, under an Open Government Licence, unless they contain personally identifiable information, sensitive information, or where publishing the data would infringe the intellectual property rights of someone outside the NHS or government
    • +
    -

    Guidance

    +

    Guidance

    -

    GOV.UK resources

    -

    In the GOV.UK service standard, open standards are part of point 13. Use and contribute to open standards, common components and patterns.

    -

    Here are some useful GOV.UK resources.

    - +

    GOV.UK resources

    +

    In the GOV.UK service standard, open standards are part of point 13. Use and contribute to open standards, common components and patterns.

    +

    Here are some useful GOV.UK resources.

    + -

    Read more about this

    - +

    Read more about this

    + -

    Other help

    - +

    Other help

    + -

    Updated: December 2019

    - -
    +
    +

    Updated: December 2019

    -
    + {% endblock %} diff --git a/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk b/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk index 486bc55d5..e2412b474 100644 --- a/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk +++ b/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk @@ -1,78 +1,60 @@ {% set pageTitle = '2. and 3. Work towards solving a whole problem and provide a joined up experience' %} {% set pageSection = 'NHS service standard' %} -{% set pageDescription = 'Consider where your service fits in your users' healthcare journey and whether you can solve a whole problem or influence a wider solution. Collaborate across team, programme and organisational boundaries and create a service that meets users' needs across all channels.' %} +{% set pageDescription = 'Consider where your service fits in your users\' healthcare journey and whether you can solve a whole problem or influence a wider solution.' %} +{% set pageSubDescription = 'Collaborate across team, programme and organisational boundaries and create a service that meets users\' needs across all channels.' %} {% set noFollow = true %} +{% set beta = 'true' %} -{% extends 'includes/layout.njk' %} +{% extends 'includes/app-layout.njk' %} {% block breadcrumb %} -{{ breadcrumb({ - items: [ - { - href: "/service-manual/", - text: "Home" - } - ], - href: "/service-manual/service-standard", - text: "NHS service standard" -}) }} + {% include 'service-standard/_breadcrumb.njk' %} {% endblock %} -{% block body %} -
    -
    -

    {{pageTitle}}

    -

    Consider where your service fits in your users' healthcare journey and whether you can solve a whole problem or influence a wider solution.

    -

    Collaborate across team, programme and organisational boundaries and create a service that meets users' needs across all channels.

    +{% block bodyContent %} + +

    Why it's important

    +

    Health is complex. People often do not know how health and care organisations and services fit together. It helps if you can bring things together into a journey which makes sense to users, irrespective of which organisation they "belong" to or the channel they use.

    + +

    You may not be able to fix a whole problem, but you may be able to improve it and to support or influence a wider solution.

    + +

    What you should do

    +

    Your team should be able to show that you:

    +
      +
    • understand where the user need you're addressing fits into wider healthcare journeys or how it will join up with other things to solve a whole problem for users
    • +
    • make it easy for users to focus on the next step in a journey or in managing their health, helping them get the right help from the right place at the right time
    • +
    • are addressing any problems with internal processes, policy or legislation that make it difficult to join things up and to address a whole problem
    • +
    • work with front line and admin staff, where appropriate, and invite them and policy people to attend user research and to contribute to decisions
    • +
    • research, test and make changes to users' experience of online and offline channels (for example, call centre scripts and letters)
    • +
    • minimise the number of times users provide the same information to NHS services (while respecting their privacy)
    • +
    • have a viable service with a scope that is based on how users think - not too wide and not too narrow
    • +
    • have considered alternatives to creating a service - for example, running a health campaign, partnering with another organisation, or making an API available - or doing nothing
    • +
    • have built relationships with other teams and organisations to make your service more effective
    • +
    • work in the open so that people outside the organisation know what you are doing, to increase the potential for collaboration and reduce duplication of effort
    • +
    + +

    Guidance

    +

    GOV.UK resources

    + + +

    Read more about this

    + + +

    Other help

    + + +
    +

    Updated: December 2019

    -
    -
    -
    - -

    Why it's important

    -

    Health is complex. People often do not know how health and care organisations and services fit together. It helps if you can bring things together into a journey which makes sense to users, irrespective of which organisation they "belong" to or the channel they use.

    - -

    You may not be able to fix a whole problem, but you may be able to improve it and to support or influence a wider solution.

    - -

    What you should do

    -

    Your team should be able to show that you:

    -
      -
    • understand where the user need you're addressing fits into wider healthcare journeys or how it will join up with other things to solve a whole problem for users
    • -
    • make it easy for users to focus on the next step in a journey or in managing their health, helping them get the right help from the right place at the right time
    • -
    • are addressing any problems with internal processes, policy or legislation that make it difficult to join things up and to address a whole problem
    • -
    • work with front line and admin staff, where appropriate, and invite them and policy people to attend user research and to contribute to decisions
    • -
    • research, test and make changes to users' experience of online and offline channels (for example, call centre scripts and letters)
    • -
    • minimise the number of times users provide the same information to NHS services (while respecting their privacy)
    • -
    • have a viable service with a scope that is based on how users think - not too wide and not too narrow
    • -
    • have considered alternatives to creating a service - for example, running a health campaign, partnering with another organisation, or making an API available - or doing nothing
    • -
    • have built relationships with other teams and organisations to make your service more effective
    • -
    • work in the open so that people outside the organisation know what you are doing, to increase the potential for collaboration and reduce duplication of effort
    • -
    - -

    Guidance

    -

    GOV.UK resources

    - - -

    Read more about this

    - - -

    Other help

    - - -

    Updated: December 2019

    - -
    -
    -
    {% endblock %} diff --git a/app/views/service-standard/4-make-the-service-simple-to-use.njk b/app/views/service-standard/4-make-the-service-simple-to-use.njk index 7c9696546..b02cb71fc 100644 --- a/app/views/service-standard/4-make-the-service-simple-to-use.njk +++ b/app/views/service-standard/4-make-the-service-simple-to-use.njk @@ -1,34 +1,17 @@ {% set pageTitle = '4. Make the service simple to use' %} {% set pageSection = 'NHS service standard' %} -{% set pageDescription = 'Build a service that's simple to use so that people can succeed first time. Test with users to make sure it works for them.' %} +{% set pageDescription = 'Build a service that\'s simple to use so that people can succeed first time. Test with users to make sure it works for them.' %} +{% set pageSubDescription = 'Healthcare journeys can be complex. Do the hard work to make things simpler.' %} {% set noFollow = true %} +{% set beta = 'true' %} -{% extends 'includes/layout.njk' %} +{% extends 'includes/app-layout.njk' %} {% block breadcrumb %} -{{ breadcrumb({ - items: [ - { - href: "/service-manual/", - text: "Home" - } - ], - href: "/service-manual/service-standard", - text: "NHS service standard" -}) }} + {% include 'service-standard/_breadcrumb.njk' %} {% endblock %} -{% block body %} -
    -
    -

    {{pageTitle}}

    -

    Build a service that's simple to use so that people can succeed first time. Test with users to make sure it works for them.

    -

    Healthcare journeys can be complex. Do the hard work to make things simpler.

    -
    -
    - -
    -
    +{% block bodyContent %}

    Why it's important

    People expect services to just work. They need things to be easy when they're worried or ill. And NHS staff need services that are easy to use so that they can focus on patient care.

    @@ -60,9 +43,8 @@
  • Talk to us on the service manual Slack channel or email the standards team at service-manual@nhs.net.
  • -

    Updated: December 2019

    - +
    +

    Updated: December 2019

    -
    -
    + {% endblock %} diff --git a/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk b/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk index 43ffa4613..19824f328 100644 --- a/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk +++ b/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk @@ -1,79 +1,61 @@ {% set pageTitle = '5. Make sure everyone can use the service' %} {% set pageSection = 'NHS service standard' %} -{% set pageDescription = 'Make sure people with different physical, mental health, social, cultural or learning needs can use your service, whether it's for the public or staff.' %} +{% set pageDescription = 'Make sure people with different physical, mental health, social, cultural or learning needs can use your service, whether it\'s for the public or staff.' %} +{% set pageSubDescription = 'Also people who do not have access to the internet or lack the skills or confidence to use it.' %} {% set noFollow = true %} +{% set beta = 'true' %} -{% extends 'includes/layout.njk' %} +{% extends 'includes/app-layout.njk' %} {% block breadcrumb %} -{{ breadcrumb({ - items: [ - { - href: "/service-manual/", - text: "Home" - } - ], - href: "/service-manual/service-standard", - text: "NHS service standard" -}) }} + {% include 'service-standard/_breadcrumb.njk' %} {% endblock %} -{% block body %} -
    -
    -

    {{pageTitle}}

    -

    Make sure people with different physical, mental health, social, cultural or learning needs can use your service, whether it's for the public or staff.

    -

    Also people who do not have access to the internet or lack the skills or confidence to use it.

    +{% block bodyContent %} + +

    Why it's important

    +

    NHS services are for everyone. We have a duty to consider everyone’s needs when we’re designing and delivering services.

    +

    Inclusive, accessible services are better for everyone. For example, using simple words helps people who are sick or stressed as well as people who have a learning disability.

    + +

    What you should do

    +

    Your team should be able to show that you:

    +
      +
    • meet accessibility standards for online and offline parts, including WCAG2.1 AA
    • +
    • understand who the most vulnerable users for your service are and include them in user research, for example: people with access needs, people with low socio-economic status (D and E), older people, and black and minority ethnic people
    • +
    • make sure you do not exclude any groups your service serves, for example because they lack digital skills or internet access, and you provide assisted digital support to cover any gaps
    • +
    • avoid making any groups of people feel excluded
    • +
    • design for low digital and health literacy
    • +
    + +

    Guidance

    + +

    NHS digital service manual

    + + +

    GOV.UK resources

    + + +

    Read more about this

    + + +

    Other help

    + + +
    +

    Updated: December 2019

    -
    -
    -
    - -

    Why it's important

    -

    NHS services are for everyone. We have a duty to consider everyone’s needs when we’re designing and delivering services.

    -

    Inclusive, accessible services are better for everyone. For example, using simple words helps people who are sick or stressed as well as people who have a learning disability.

    - -

    What you should do

    -

    Your team should be able to show that you:

    -
      -
    • meet accessibility standards for online and offline parts, including WCAG2.1 AA
    • -
    • understand who the most vulnerable users for your service are and include them in user research, for example: people with access needs, people with low socio-economic status (D and E), older people, and black and minority ethnic people
    • -
    • make sure you do not exclude any groups your service serves, for example because they lack digital skills or internet access, and you provide assisted digital support to cover any gaps
    • -
    • avoid making any groups of people feel excluded
    • -
    • design for low digital and health literacy
    • -
    - -

    Guidance

    - -

    NHS digital service manual

    - - -

    GOV.UK resources

    - - -

    Read more about this

    - - -

    Other help

    - - -

    Updated: December 2019

    - -
    -
    -
    {% endblock %} diff --git a/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk b/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk index 9bebdeb06..5e3e925aa 100644 --- a/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk +++ b/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk @@ -1,34 +1,17 @@ {% set pageTitle = '6. Create a team that includes multidisciplinary skills and perspectives' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Make sure you have the right - and diverse - skills and roles to build and operate the service.' %} +{% set pageSubDescription = 'Make as many decisions as possible in the team so that you can respond quickly to what you learn about users and their needs.' %} {% set noFollow = true %} +{% set beta = 'true' %} -{% extends 'includes/layout.njk' %} +{% extends 'includes/app-layout.njk' %} {% block breadcrumb %} -{{ breadcrumb({ - items: [ - { - href: "/service-manual/", - text: "Home" - } - ], - href: "/service-manual/service-standard", - text: "NHS service standard" -}) }} + {% include 'service-standard/_breadcrumb.njk' %} {% endblock %} -{% block body %} -
    -
    -

    {{pageTitle}}

    -

    Make sure you have the right - and diverse - skills and roles to build and operate the service.

    -

    Make as many decisions as possible in the team so that you can respond quickly to what you learn about users and their needs.

    -
    -
    - -
    -
    +{% block bodyContent %}

    Why it's important

    A team with diversity of expertise and perspectives is more likely to come up with the best solution. The size and roles you'll need will change as you build the service.

    @@ -49,6 +32,7 @@

    Guidance

    NHS service manual

    See also service standard point 16: Make your service clinically safe

    +

    GOV.UK resources

    -

    Updated: December 2019

    - +
    +

    Updated: December 2019

    -
    -
    + {% endblock %} diff --git a/app/views/service-standard/7-use-agile-ways-of-working.njk b/app/views/service-standard/7-use-agile-ways-of-working.njk index fa45b5e75..d9b37c398 100644 --- a/app/views/service-standard/7-use-agile-ways-of-working.njk +++ b/app/views/service-standard/7-use-agile-ways-of-working.njk @@ -1,34 +1,17 @@ {% set pageTitle = '7. Use agile ways of working' %} {% set pageSection = 'NHS service standard' %} -{% set pageDescription = 'Make sure that the team can deliver quickly and adapt to meet users' needs.' %} +{% set pageDescription = 'Make sure that the team can deliver quickly and adapt to meet users\' needs.' %} +{% set pageSubDescription = 'Resource them flexibly.' %} {% set noFollow = true %} +{% set beta = 'true' %} -{% extends 'includes/layout.njk' %} +{% extends 'includes/app-layout.njk' %} {% block breadcrumb %} -{{ breadcrumb({ - items: [ - { - href: "/service-manual/", - text: "Home" - } - ], - href: "/service-manual/service-standard", - text: "NHS service standard" -}) }} + {% include 'service-standard/_breadcrumb.njk' %} {% endblock %} -{% block body %} -
    -
    -

    {{pageTitle}}

    -

    Make sure that the team can deliver quickly and adapt to meet users' needs.

    -

    Resource them flexibly.

    -
    -
    - -
    -
    +{% block bodyContent %}

    Why it's important

    Using agile, iterative, user-centred ways of working will help you get your service in front of real users as soon as possible. Then observing and analysing data on how they use it, and iterating the service based on what you’ve learned.

    @@ -62,9 +45,8 @@
  • Talk to us on the service manual Slack channel or email the standards team at service-manual@nhs.net.
  • -

    Updated: December 2019

    - +
    +

    Updated: December 2019

    -
    -
    + {% endblock %} diff --git a/app/views/service-standard/8-iterate-and-improve-frequently.njk b/app/views/service-standard/8-iterate-and-improve-frequently.njk index e9fadf387..a4f483209 100644 --- a/app/views/service-standard/8-iterate-and-improve-frequently.njk +++ b/app/views/service-standard/8-iterate-and-improve-frequently.njk @@ -1,34 +1,17 @@ {% set pageTitle = '8. Iterate and improve frequently'%} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Make sure you have the capacity, resources and technical flexibility to iterate and improve the service frequently.' %} +{% set pageSubDescription = 'Work with your organisation to make sure that you\'re able to focus on the improvements that have the most value.' %} {% set noFollow = true %} +{% set beta = 'true' %} -{% extends 'includes/layout.njk' %} +{% extends 'includes/app-layout.njk' %} {% block breadcrumb %} -{{ breadcrumb({ - items: [ - { - href: "/service-manual/", - text: "Home" - } - ], - href: "/service-manual/service-standard", - text: "NHS service standard" -}) }} + {% include 'service-standard/_breadcrumb.njk' %} {% endblock %} -{% block body %} -
    -
    -

    {{pageTitle}}

    -

    Make sure you have the capacity, resources and technical flexibility to iterate and improve the service frequently.

    -

    Work with your organisation to make sure that you're able to focus on the improvements that have the most value.

    -
    -
    - -
    -
    +{% block bodyContent %}

    Why it's important

    Services are never ‘finished’. Once you have got real people using your service, you need to iterate and improve it throughout its lifetime. @@ -59,9 +42,8 @@

  • Talk to us on the service manual Slack channel or email the standards team at service-manual@nhs.net.
  • -

    Updated: December 2019

    - +
    +

    Updated: December 2019

    -
    -
    + {% endblock %} diff --git a/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk b/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk index 0a89d47d6..f16bea906 100644 --- a/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk +++ b/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk @@ -1,80 +1,62 @@ {% set pageTitle = '9. Respect and protect users’ confidentiality and privacy' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Evaluate what data and information your service will be collecting, storing and providing.' %} +{% set pageSubDescription = 'Identify and address security threats, legal responsibilities, confidentialty and privacy issues and risks associated with the service. Consult experts where you need to.' %} {% set noFollow = true %} +{% set beta = 'true' %} -{% extends 'includes/layout.njk' %} +{% extends 'includes/app-layout.njk' %} {% block breadcrumb %} -{{ breadcrumb({ - items: [ - { - href: "/service-manual/", - text: "Home" - } - ], - href: "/service-manual/service-standard", - text: "NHS service standard" -}) }} + {% include 'service-standard/_breadcrumb.njk' %} {% endblock %} -{% block body %} -
    -
    -

    {{pageTitle}}

    -

    Evaluate what data and information your service will be collecting, storing and providing.

    -

    Identify and address security threats, legal responsibilities, confidentialty and privacy issues and risks associated with the service. Consult experts where you need to.

    -
    -
    - -
    -
    +{% block bodyContent %} -

    Why it's important

    -

    The NHS services handles some of the most sensitive personal data. It has a legal duty to protect this information. Failing to do so would undermine public trust in the health service.

    +

    Why it's important

    +

    The NHS services handles some of the most sensitive personal data. It has a legal duty to protect this information. Failing to do so would undermine public trust in the health service.

    -

    What you should do

    -

    Your team should be able to show that you:

    -
      -
    • collect and process user's personal information in a way that's secure and respects their privacy
    • -
    • have appropriate processes in place to protect the public and NHS staff, for example, if you manage user generated content
    • -
    • comply with the General Data Protection Regulation (GDPR)
    • -
    • are aware of and, if appropriate, comply with NHS specific guidance on data security and information governance
    • -
    • actively identify security and privacy threats to the service and have a robust, proportionate approach to securing information and managing fraud risks
    • -
    • have a plan and budget that lets you manage security during the life of the service (for example, by responding to new threats, putting controls in place and applying security patches to software)
    • -
    • use the NHS login and NHS identity programme, if your service needs identity assurance and authentication
    • -
    • work with business and information risk teams (for example, senior information risk owners and information asset owners) to make sure the service meets security requirements and regulations without putting delivery at risk
    • -
    • carry out appropriate vulnerability and penetration testing
    • -
    +

    What you should do

    +

    Your team should be able to show that you:

    +
      +
    • collect and process user's personal information in a way that's secure and respects their privacy
    • +
    • have appropriate processes in place to protect the public and NHS staff, for example, if you manage user generated content
    • +
    • comply with the General Data Protection Regulation (GDPR)
    • +
    • are aware of and, if appropriate, comply with NHS specific guidance on data security and information governance
    • +
    • actively identify security and privacy threats to the service and have a robust, proportionate approach to securing information and managing fraud risks
    • +
    • have a plan and budget that lets you manage security during the life of the service (for example, by responding to new threats, putting controls in place and applying security patches to software)
    • +
    • use the NHS login and NHS identity programme, if your service needs identity assurance and authentication
    • +
    • work with business and information risk teams (for example, senior information risk owners and information asset owners) to make sure the service meets security requirements and regulations without putting delivery at risk
    • +
    • carry out appropriate vulnerability and penetration testing
    • +
    -

    Guidance

    +

    Guidance

    -

    GOV.UK resources

    - - -

    Read more about this

    +

    GOV.UK resources

    - -

    Other help

    - - -

    Updated: December 2019

    - -
    +
  • Collecting personal information from users
  • +
  • Protecting your service against fraud
  • +
  • Securing your information
  • +
  • Vulnerability and penetration testing
  • + + +

    Read more about this

    + + +

    Other help

    + + +
    +

    Updated: December 2019

    -
    + {% endblock %} diff --git a/app/views/service-standard/_breadcrumb.njk b/app/views/service-standard/_breadcrumb.njk new file mode 100644 index 000000000..5d629cfaf --- /dev/null +++ b/app/views/service-standard/_breadcrumb.njk @@ -0,0 +1,10 @@ +{{ breadcrumb({ + items: [ + { + href: "/service-manual/", + text: "Home" + } + ], + href: "/service-manual/service-standard", + text: "Service standard" +}) }} diff --git a/app/views/service-standard/about.njk b/app/views/service-standard/about.njk index 3c5577570..9624282d6 100644 --- a/app/views/service-standard/about.njk +++ b/app/views/service-standard/about.njk @@ -1,70 +1,49 @@ {% set pageTitle = 'About the NHS service standard' %} {% set pageSection = 'NHS service standard' %} -{% set pageDescription = 'The NHS service standard is designed to help teams meet the GOV.UK service standard in the context of health and care.' %} +{% set pageDescription = 'The NHS service standard is designed to help teams meet the GOV.UK service standard in the context of health and care.' %} +{% set pageSubDescription = 'A few NHS teams are assessed against the GOV.UK service standard as a condition of their spend approval or because they are running a big transactional service. Other NHS teams follow the GOV.UK service standard because it\'s best practice.' %} {% set noFollow = true %} +{% set beta = 'true' %} -{% extends 'includes/layout.njk' %} +{% extends 'includes/app-layout.njk' %} {% block breadcrumb %} -{{ breadcrumb({ - items: [ - { - href: "/service-manual/", - text: "Home" - } - ], - href: "/service-manual/service-standard", - text: "NHS service standard" -}) }} + {% include 'service-standard/_breadcrumb.njk' %} {% endblock %} -{% block body %} -
    -
    -

    {{pageTitle}}

    -

    The NHS service standard is designed to help teams meet the GOV.UK service standard in the context of health and care.

    - -

    It is in 'beta', which means that we think it's good enough to share but we're still testing it.

    - +{% block bodyContent %} + +

    Why publish an NHS companion to the GOV.UK service standard?

    +

    This NHS companion follows the GOV.UK standard point by point, but in our user research, we found that NHS digital teams also need:

    + + +

    The NHS service standard and the guidance in the NHS digital service manual are designed to help teams build and run services that improve health outcomes, people's experience of health and care, and the efficiency of the health service.

    + +

    What is different about the NHS?

    +

    There is a lot that is the same across Government and the NHS but this guidance also takes account of what's different in health.

    + +

    For example:

    +
      +
    • health 'journeys' are more fragmented and multi-layered than many government services
    • +
    • digital services in the NHS are much more likely to need to support face to face contact
    • +
    • multi-disciplinary teams are not common in the NHS - by 'multi-disciplinary' we mean teams made up of product and delivery managers, designers, developers, user researchers and content designers
    • +
    • NHS delivery teams are less likely to be practising user-centred design and agile service delivery
    • +
    • measuring outcomes is often more complex for health
    • +
    • more products and services are commissioned locally, for example in hospital trusts, and they are more likely to rely on suppliers, long-term contracts and ‘off the shelf' solutions
    • +
    +

    In our user research, we saw evidence of the power of the NHS logo to unify teams, make the GOV.UK standard relevant and encourage people to work to it.

    + +

    We're very interested in hearing what you think about the NHS service standard as a companion to the GOV.UK service standard and how it might, or might not, help you develop digital services in health.

    +

    Email us or get in touch on the service manual Slack channel.

    + +
    +

    Updated: December 2019

    -
    - -
    -
    -

    A few NHS teams are assessed against the GOV.UK service standard as a condition of their spend approval or because they are running a big transactional service. Other NHS teams follow the GOV.UK service standard because it's best practice.

    - -

    Why publish an NHS companion to the GOV.UK service standard?

    -

    This NHS companion follows the GOV.UK standard point by point, but in our user research, we found that NHS digital teams also need:

    - - -

    The NHS service standard and the guidance in the NHS digital service manual are designed to help teams build and run services that improve health outcomes, people's experience of health and care, and the efficiency of the health service.

    -

    What is different about the NHS?

    -

    There is a lot that is the same across Government and the NHS but this guidance also takes account of what's different in health.

    - -

    For example:

    -
      -
    • health 'journeys' are more fragmented and multi-layered than many government services
    • -
    • digital services in the NHS are much more likely to need to support face to face contact
    • -
    • multi-disciplinary teams are not common in the NHS - by 'multi-disciplinary' we mean teams made up of product and delivery managers, designers, developers, user researchers and content designers
    • -
    • NHS delivery teams are less likely to be practising user-centred design and agile service delivery
    • -
    • measuring outcomes is often more complex for health
    • -
    • more products and services are commissioned locally, for example in hospital trusts, and they are more likely to rely on suppliers, long-term contracts and ‘off the shelf' solutions
    • -
    -

    In our user research, we saw evidence of the power of the NHS logo to unify teams, make the GOV.UK standard relevant and encourage people to work to it.

    - -

    We're very interested in hearing what you think about the NHS service standard as a companion to the GOV.UK service standard and how it might, or might not, help you develop digital services in health.

    -

    Email us or get in touch on the service manual Slack channel.

    - -

    Updated: December 2019

    - -
    -
    -
    {% endblock %} diff --git a/app/views/service-standard/index.njk b/app/views/service-standard/index.njk index 68a66cf3f..24bb4b9d5 100644 --- a/app/views/service-standard/index.njk +++ b/app/views/service-standard/index.njk @@ -1,121 +1,251 @@ {% set pageTitle = 'NHS service standard' %} {% set pageDescription = 'This NHS companion to the GOV.UK service standard will help you check that your service is good enough for the NHS.' %} {% set noFollow = true %} +{% set beta = 'true' %} -{% extends 'includes/layout.njk' %} +{% extends 'includes/app-layout.njk' %} -{% block body %} -
    -
    -

    {{pageTitle}}

    -

    -

    This NHS companion to the GOV.UK service standard will help you check that your service is good enough for the NHS.

    +{% block bodyContent %} -

    It is in 'beta', which means that we think it's good enough to share but we're still testing it.

    ​ - - - -

    The NHS service standard is designed to help teams:

    -
      +

      The NHS service standard is designed to help teams:

      +
      • meet the GOV.UK standard
      • address the different needs of health service users
      • navigate the complexities of delivering digital services in health and care
      • -
      +
    -

    It contains the 14 points of the GOV.UK service standard, with guidance to help teams meet them in a health context, with 3 extra points specific to health and social care.

    -

    Read more about the NHS service standard.

    -
    -
    +

    It contains the 14 points of the GOV.UK service standard, with guidance to help teams meet them in a health context, with 3 extra points specific to health and social care.

    +

    Read more about the NHS service standard.

    -
    -

    The GOV.UK service standard in the context of health

    -

    1. Understand users and their needs in the context of health and care

    -

    Take time to understand your users' clinical, practical and emotional needs - and their abilities - and the problem you're trying to solve for them.

    -

    Think about people's entire experience and the systems and processes around the product or service you're building.

    -

    Read more about point 1.

    - -

    2. Work towards solving a whole problem for users

    -

    Consider where your service fits in your users' healthcare journey and whether you can solve a whole problem or influence a wider solution.

    - -

    3. Provide a joined up experience across all channels

    -

    Collaborate across team, programme and organisational boundaries and create a service that meets users' needs across all channels.

    -

    Read more about points 2 and 3.

    - -

    4. Make the service simple to use

    -

    Build a service that's simple to use so that people can succeed first time. Test with users to make sure it works for them.

    -

    Healthcare journeys can be complex. Do the hard work to make things simpler.

    -

    Read more about point 4.

    - -

    5. Make sure everyone can use the service

    -

    Make sure people with different physical, mental health, social, cultural or learning needs can use your service, whether it's for the public or staff.

    -

    And people who do not have access to the internet or lack the skills or confidence to use it.

    -

    Read more about point 5.

    - -

    6. Create a team that includes multidisciplinary skills and perspectives

    -

    Make sure you have the right - and diverse - skills and roles to build and operate the service.

    -

    Make as many decisions as possible in the team so that you can respond quickly to what you learn about users and their needs.

    -

    Read more about point 6.

    - -

    7. Use agile ways of working

    -

    Make sure that the team can deliver quickly and adapt to meet users' needs.

    -

    Resource them flexibly.

    -

    Read more about point 7.

    - -

    8. Iterate and improve frequently

    -

    Make sure you have the capacity, resources and technical flexibility to iterate and improve the service frequently.

    -

    Work with your organisation to make sure that you're able to focus on the improvements that have the most value.

    -

    Read more about point 8.

    - -

    9. Respect and protect users' confidentiality and privacy

    -

    Evaluate what data and information your service will be collecting, storing and providing.

    -

    Identify and address security threats, legal responsibilities, confidentiality and privacy issues and risks associated with the service. Consult experts where you need to.

    -

    Read more about point 9.

    - -

    10. Define what success looks like and be open about how your service is performing

    -

    Work out how your service helps improve health and well being, people's experience of health and care, and the efficiency of the health service and how you will know that you're succeeding. If you cannot measure health benefits, choose other suitable indicators.

    -

    Collect performance information across all channels so that you can measure and show that the service is effective and improving.

    -

    Read more about point 10.

    - - -

    11. Choose the right tools and technology

    -

    Choose tools and technology that let you build a good service in an efficient, cost effective way.

    -

    Build a sustainable service which allows you to change direction in future.

    -

    Read more about point 11.

    - -

    12. Make new source code open

    -

    Make all new source code open and reusable, and publish it under appropriate licences. If you cannot do this for specific subsets of the source code, provide a convincing explanation.

    -

    Read more about point 12.

    - -

    13. Use and contribute to open standards, common components and patterns

    -

    Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK design system.

    -

    Use open standards, and propose a new open standard if there is not one that already meets your needs.

    -

    Read more about point 13.

    - -

    14. Operate a reliable service

    -

    People need the NHS 24 hours a day, every day of the year. Minimise service downtime and have a plan to deal with it when it does happen.

    -

    Read more about point 14.

    - -

    3 extra points for health and social care

    - -

    15. Support a culture of care

    -

    Caring is the core business of the NHS. NHS services should provide a positive experience of care and they should help NHS staff provide a caring service.

    -

    All services should make patients, the public and staff feel valued and supported and, as far as possible, involve people in their own care.

    -

    Read more about point 15.

    - -

    16. Make your service clinically safe

    -

    Digital information, tools and services have the potential to cause patient harm.

    -

    Make sure that you actively manage any safety risks associated with your content, service and processes.

    -

    Read more about point 16.

    - -

    17. Make your service interoperable

    -

    In an organisation as diverse and complex as the NHS, we need systems and services which talk to each other. Build for interoperability to share patient records and get data quickly from one place to another.

    -

    Read more about point 17.

    - -

    Updated: December 2019

    - -
    + + +

    3 extra points for health and social care

    + + + +
    +

    Updated: December 2019

    -
    + {% endblock %} From 97079f393d2c792d919cf8f8af6d9b35a895c782 Mon Sep 17 00:00:00 2001 From: davidhunter08 Date: Sat, 23 Nov 2019 11:46:11 +0000 Subject: [PATCH 23/49] update service standard pages --- app/styles/main.scss | 22 +++++- ...nd-their-needs-context-health-and-care.njk | 3 +- ...n-about-how-your-service-is-performing.njk | 3 +- ...-choose-the-right-tools-and-technology.njk | 3 +- ...andards-common-components-and-patterns.njk | 8 ++- .../15-support-a-culture-of-care.njk | 3 +- .../16-make-your-service-clinically-safe.njk | 3 +- ...lem-and-provide-a-joined-up-experience.njk | 3 +- .../4-make-the-service-simple-to-use.njk | 69 +++++++++--------- ...make-sure-everyone-can-use-the-service.njk | 3 +- ...tidisciplinary-skills-and-perspectives.njk | 71 ++++++++++--------- .../7-use-agile-ways-of-working.njk | 69 +++++++++--------- .../8-iterate-and-improve-frequently.njk | 68 +++++++++--------- ...tect-users-confidentiality-and-privacy.njk | 3 +- app/views/service-standard/about.njk | 8 ++- 15 files changed, 188 insertions(+), 151 deletions(-) diff --git a/app/styles/main.scss b/app/styles/main.scss index 2319436b3..d2899caed 100755 --- a/app/styles/main.scss +++ b/app/styles/main.scss @@ -80,7 +80,6 @@ .app-beta__text { @include nhsuk-font($size: 16, $line-height: 1.2); display: table-cell; - padding-top: 2px; vertical-align: baseline; } @@ -89,6 +88,23 @@ h1 + .nhsuk-lede-text { margin-top: - nhsuk-spacing(3); } -.nhsuk-lede-text + .app-lede-text { - margin-top: - nhsuk-spacing(4); +.nhsuk-lede-text { + @include mq($until: desktop) { + margin-bottom: nhsuk-spacing(5); + } +} + +.nhsuk-lede-text + .app-lede-text--sub { + margin-bottom: nhsuk-spacing(7); + margin-top: - nhsuk-spacing(3); + + @include mq($until: desktop) { + margin-bottom: nhsuk-spacing(5); + margin-top: - nhsuk-spacing(2); + } +} + +.app-lede-text--sub + h2, +.app-lede-text--sub + .nhsuk-heading-l { + padding-top: 0; } diff --git a/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk b/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk index c84492f58..0406b9eff 100644 --- a/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk +++ b/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk @@ -1,7 +1,6 @@ {% set pageTitle = '1. Understand users and their needs in the context of health and care' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Take time to understand your users\' clinical, practical and emotional needs - and their abilities - and the problem you\'re trying to solve for them.' %} -{% set pageSubDescription = 'Think about people\'s entire experience and the systems and processes around the product or service you\'re building.' %} {% set noFollow = true %} {% set beta = 'true' %} @@ -13,6 +12,8 @@ {% block bodyContent %} +

    Think about people's entire experience and the systems and processes around the product or service you're building.

    +

    Why it's important

    Lots of products and services are not useful for users. Others are frustrating and hard to use. You need to understand your users and their needs - from their point of view - to build something that helps them.

    Understanding as much of the context as possible will give you the best chance of meeting users' needs in a simple, cost effective way.

    diff --git a/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk b/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk index 35363c69e..b097b602b 100644 --- a/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk +++ b/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk @@ -1,7 +1,6 @@ {% set pageTitle = '10. Define what success looks like and be open about how your service is performing' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Work out how your service helps improve health and well being, people\'s experience of health and care, and the efficiency of the health service and how you will know that you\'re succeeding.' %} -{% set pageSubDescription = 'Collect performance information across all channels so that you can measure and show that the service is effective and improving.' %} {% set noFollow = true %} {% set beta = 'true' %} @@ -13,6 +12,8 @@ {% block bodyContent %} +

    Collect performance information across all channels so that you can measure and show that the service is effective and improving.

    +

    Why it's important

    Having clear objectives, a definition of what success looks like and appropriate metrics means that you’ll know whether the service is solving the problem it’s meant to solve.

    Collecting the right information will alert you to improvements you need to make and help you know if changes have the effect you intend.

    diff --git a/app/views/service-standard/11-choose-the-right-tools-and-technology.njk b/app/views/service-standard/11-choose-the-right-tools-and-technology.njk index fc83e70ac..7288f2cb0 100644 --- a/app/views/service-standard/11-choose-the-right-tools-and-technology.njk +++ b/app/views/service-standard/11-choose-the-right-tools-and-technology.njk @@ -1,7 +1,6 @@ {% set pageTitle = '11. Choose the right tools and technology' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Choose tools and technology that let you build a good service in an efficient, cost effective way.' %} -{% set pageSubDescription = 'Build a sustainable service which allows you to change direction in future.' %} {% set noFollow = true %} {% set beta = 'true' %} @@ -13,6 +12,8 @@ {% block bodyContent %} +

    Build a sustainable service which allows you to change direction in future.

    +

    Why it's important

    When you make a decision about technology, you’re making a significant investment. The choices you make will have a huge impact on your ability to create, iterate and operate the service in a flexible, sustainable way.

    diff --git a/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk b/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk index 5a3b6bdd2..68042047d 100644 --- a/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk +++ b/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk @@ -1,9 +1,9 @@ {% set pageTitle = '13. Use and contribute to open standards, common components and patterns' %} {% set pageSection = 'NHS service standard' %} -{% set pageDescription = 'Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK design system.' %} -{% set pageSubDescription = 'Use open standards, and propose a new open standard if there is not one that already meets your needs.' %} +{% set pageDescription = 'Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK design system.' %} {% set noFollow = true %} {% set beta = 'true' %} +{% set hideDescription = 'true' %} {% extends 'includes/app-layout.njk' %} @@ -13,6 +13,10 @@ {% block bodyContent %} +

    Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK design system.

    + +

    Use open standards, and propose a new open standard if there is not one that already meets your needs.

    +

    Why it's important

    Using common components and patterns means you do not have to solve problems that have already been solved. By using a component or pattern that’s already been extensively tested, you can provide users with a good experience in a cost effective way.

    If you develop your own components or patterns, it’s important to share them so that others can benefit from your work.

    diff --git a/app/views/service-standard/15-support-a-culture-of-care.njk b/app/views/service-standard/15-support-a-culture-of-care.njk index f1816afb4..e272ade67 100644 --- a/app/views/service-standard/15-support-a-culture-of-care.njk +++ b/app/views/service-standard/15-support-a-culture-of-care.njk @@ -1,7 +1,6 @@ {% set pageTitle = '15. Support a culture of care' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Caring is the core business of the NHS. NHS services should provide a positive experience of care or help NHS staff provide a caring service.' %} -{% set pageSubDescription = 'All services should make patients, the public and staff feel valued and supported and, as far as possible, involve people in their own care.' %} {% set noFollow = true %} {% set beta = 'true' %} @@ -13,6 +12,8 @@ {% block bodyContent %} +

    All services should make patients, the public and staff feel valued and supported and, as far as possible, involve people in their own care.

    +

    Why it's important

    Digital services are not excluded from the NHS commitment to care and compassion. Small things make a difference when people are, for example, sick or stressed, grieving or dying.

    We can improve people's experience of care by being inclusive and treating them with respect.

    diff --git a/app/views/service-standard/16-make-your-service-clinically-safe.njk b/app/views/service-standard/16-make-your-service-clinically-safe.njk index 689348e09..bcaeca1b1 100644 --- a/app/views/service-standard/16-make-your-service-clinically-safe.njk +++ b/app/views/service-standard/16-make-your-service-clinically-safe.njk @@ -1,7 +1,6 @@ {% set pageTitle = '16. Make your service clinically safe' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Digital information, tools and services have the potential to cause patient harm.' %} -{% set pageSubDescription = 'Make sure that you actively manage any safety risks associated with your content, service and processes.' %} {% set noFollow = true %} {% set beta = 'true' %} @@ -13,6 +12,8 @@ {% block bodyContent %} +

    Make sure that you actively manage any safety risks associated with your content, service and processes.

    +

    Why it's important

    Clinical risk management is key to creating safe digital services. Work with your clinical safety officer to consider what could go wrong, how serious it could be, and how likely it is, so that you can minimise the risk of harm.

    diff --git a/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk b/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk index e2412b474..887e4ab56 100644 --- a/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk +++ b/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk @@ -2,7 +2,6 @@ {% set pageTitle = '2. and 3. Work towards solving a whole problem and provide a joined up experience' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Consider where your service fits in your users\' healthcare journey and whether you can solve a whole problem or influence a wider solution.' %} -{% set pageSubDescription = 'Collaborate across team, programme and organisational boundaries and create a service that meets users\' needs across all channels.' %} {% set noFollow = true %} {% set beta = 'true' %} @@ -14,6 +13,8 @@ {% block bodyContent %} +

    Collaborate across team, programme and organisational boundaries and create a service that meets users' needs across all channels.

    +

    Why it's important

    Health is complex. People often do not know how health and care organisations and services fit together. It helps if you can bring things together into a journey which makes sense to users, irrespective of which organisation they "belong" to or the channel they use.

    diff --git a/app/views/service-standard/4-make-the-service-simple-to-use.njk b/app/views/service-standard/4-make-the-service-simple-to-use.njk index b02cb71fc..804368aa8 100644 --- a/app/views/service-standard/4-make-the-service-simple-to-use.njk +++ b/app/views/service-standard/4-make-the-service-simple-to-use.njk @@ -1,7 +1,6 @@ {% set pageTitle = '4. Make the service simple to use' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Build a service that\'s simple to use so that people can succeed first time. Test with users to make sure it works for them.' %} -{% set pageSubDescription = 'Healthcare journeys can be complex. Do the hard work to make things simpler.' %} {% set noFollow = true %} {% set beta = 'true' %} @@ -13,38 +12,40 @@ {% block bodyContent %} -

    Why it's important

    -

    People expect services to just work. They need things to be easy when they're worried or ill. And NHS staff need services that are easy to use so that they can focus on patient care.

    - -

    What you should do

    -

    Your team should be able to show that you:

    -
      -
    • make sure the service helps the user to do what they need to do as simply as possible, so that people succeed first time, with the minimum of help
    • -
    • test for usability frequently with actual and potential users, using appropriate research techniques
    • -
    • test all the parts of the service that the user interacts with - online and offline parts (like letters)
    • -
    • design the service to work online with a range of devices that reflect users' behaviour
    • -
    • make the experience consistent from start to finish by using the styles, components and patterns and the content style guide in the service manual
    • -
    - -

    Guidance

    -

    NHS digital service manual

    - - -

    GOV.UK resources

    - - -

    Other help

    - - -
    -

    Updated: December 2019

    -
    +

    Healthcare journeys can be complex. Do the hard work to make things simpler.

    + +

    Why it's important

    +

    People expect services to just work. They need things to be easy when they're worried or ill. And NHS staff need services that are easy to use so that they can focus on patient care.

    + +

    What you should do

    +

    Your team should be able to show that you:

    +
      +
    • make sure the service helps the user to do what they need to do as simply as possible, so that people succeed first time, with the minimum of help
    • +
    • test for usability frequently with actual and potential users, using appropriate research techniques
    • +
    • test all the parts of the service that the user interacts with - online and offline parts (like letters)
    • +
    • design the service to work online with a range of devices that reflect users' behaviour
    • +
    • make the experience consistent from start to finish by using the styles, components and patterns and the content style guide in the service manual
    • +
    + +

    Guidance

    +

    NHS digital service manual

    + + +

    GOV.UK resources

    + + +

    Other help

    + + +
    +

    Updated: December 2019

    +
    {% endblock %} diff --git a/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk b/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk index 19824f328..51887308c 100644 --- a/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk +++ b/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk @@ -1,7 +1,6 @@ {% set pageTitle = '5. Make sure everyone can use the service' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Make sure people with different physical, mental health, social, cultural or learning needs can use your service, whether it\'s for the public or staff.' %} -{% set pageSubDescription = 'Also people who do not have access to the internet or lack the skills or confidence to use it.' %} {% set noFollow = true %} {% set beta = 'true' %} @@ -13,6 +12,8 @@ {% block bodyContent %} +

    Also people who do not have access to the internet or lack the skills or confidence to use it.

    +

    Why it's important

    NHS services are for everyone. We have a duty to consider everyone’s needs when we’re designing and delivering services.

    Inclusive, accessible services are better for everyone. For example, using simple words helps people who are sick or stressed as well as people who have a learning disability.

    diff --git a/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk b/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk index 5e3e925aa..fb0f627f3 100644 --- a/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk +++ b/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk @@ -1,7 +1,6 @@ {% set pageTitle = '6. Create a team that includes multidisciplinary skills and perspectives' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Make sure you have the right - and diverse - skills and roles to build and operate the service.' %} -{% set pageSubDescription = 'Make as many decisions as possible in the team so that you can respond quickly to what you learn about users and their needs.' %} {% set noFollow = true %} {% set beta = 'true' %} @@ -13,39 +12,41 @@ {% block bodyContent %} -

    Why it's important

    -

    A team with diversity of expertise and perspectives is more likely to come up with the best solution. The size and roles you'll need will change as you build the service.

    - -

    You will get most value from the broad range of roles recommended by the Government Digital Service.

    - -

    What you should do

    -

    You should be able to show that your team:

    -
      -
    • is a multidisciplinary team that will help you achieve what you need to in each phase of development
    • -
    • is co-located as far as possible
    • -
    • includes people with expertise in how services are delivered across all the relevant channels, and the back end systems the service will need to integrate with
    • -
    • has access to the specialist expertise it needs (for example clinical, legal or policy expertise, from inside or outside the organisation)
    • -
    • will help you deal with what you believe are your riskiest assumptions
    • -
    -

    If the team is working with contractors and outside suppliers, you must make sure it’s on a sustainable basis.

    - -

    Guidance

    -

    NHS service manual

    -

    See also service standard point 16: Make your service clinically safe

    - -

    GOV.UK resources

    - - -

    Other help

    - - -
    -

    Updated: December 2019

    -
    +

    Make as many decisions as possible in the team so that you can respond quickly to what you learn about users and their needs.

    + +

    Why it's important

    +

    A team with diversity of expertise and perspectives is more likely to come up with the best solution. The size and roles you'll need will change as you build the service.

    + +

    You will get most value from the broad range of roles recommended by the Government Digital Service.

    + +

    What you should do

    +

    You should be able to show that your team:

    +
      +
    • is a multidisciplinary team that will help you achieve what you need to in each phase of development
    • +
    • is co-located as far as possible
    • +
    • includes people with expertise in how services are delivered across all the relevant channels, and the back end systems the service will need to integrate with
    • +
    • has access to the specialist expertise it needs (for example clinical, legal or policy expertise, from inside or outside the organisation)
    • +
    • will help you deal with what you believe are your riskiest assumptions
    • +
    +

    If the team is working with contractors and outside suppliers, you must make sure it’s on a sustainable basis.

    + +

    Guidance

    +

    NHS service manual

    +

    See also service standard point 16: Make your service clinically safe

    + +

    GOV.UK resources

    + + +

    Other help

    + + +
    +

    Updated: December 2019

    +
    {% endblock %} diff --git a/app/views/service-standard/7-use-agile-ways-of-working.njk b/app/views/service-standard/7-use-agile-ways-of-working.njk index d9b37c398..35a4f584b 100644 --- a/app/views/service-standard/7-use-agile-ways-of-working.njk +++ b/app/views/service-standard/7-use-agile-ways-of-working.njk @@ -1,7 +1,6 @@ {% set pageTitle = '7. Use agile ways of working' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Make sure that the team can deliver quickly and adapt to meet users\' needs.' %} -{% set pageSubDescription = 'Resource them flexibly.' %} {% set noFollow = true %} {% set beta = 'true' %} @@ -13,40 +12,42 @@ {% block bodyContent %} -

    Why it's important

    -

    Using agile, iterative, user-centred ways of working will help you get your service in front of real users as soon as possible. Then observing and analysing data on how they use it, and iterating the service based on what you’ve learned.

    -

    Because you’re not specifying everything up front before you’ve developed an understanding of what users need, you will reduce the risk of delivering the wrong thing.

    +

    Resource them flexibly.

    -

    What you should do

    -

    Your team should be able to show that you:

    -
      -
    • use agile ways of working, researching, learning and changing as you go
    • -
    • make decisions with senior stakeholders that allow you to adapt and change
    • -
    • make sure that the right people know what’s happening at the right level of detail
    • -
    • are resourced flexibly
    • -
    - -

    Guidance

    -

    NHS service manual

    -

    See also service standard point 8. Iterate and improve frequently.

    - -

    GOV.UK resources

    - - -

    Read more about this

    - - -

    Other help

    - +

    Why it's important

    +

    Using agile, iterative, user-centred ways of working will help you get your service in front of real users as soon as possible. Then observing and analysing data on how they use it, and iterating the service based on what you’ve learned.

    +

    Because you’re not specifying everything up front before you’ve developed an understanding of what users need, you will reduce the risk of delivering the wrong thing.

    + +

    What you should do

    +

    Your team should be able to show that you:

    +
      +
    • use agile ways of working, researching, learning and changing as you go
    • +
    • make decisions with senior stakeholders that allow you to adapt and change
    • +
    • make sure that the right people know what’s happening at the right level of detail
    • +
    • are resourced flexibly
    • +
    -
    -

    Updated: December 2019

    -
    +

    Guidance

    +

    NHS service manual

    +

    See also service standard point 8. Iterate and improve frequently.

    + +

    GOV.UK resources

    + + +

    Read more about this

    + + +

    Other help

    + + +
    +

    Updated: December 2019

    +
    {% endblock %} diff --git a/app/views/service-standard/8-iterate-and-improve-frequently.njk b/app/views/service-standard/8-iterate-and-improve-frequently.njk index a4f483209..0b59b1240 100644 --- a/app/views/service-standard/8-iterate-and-improve-frequently.njk +++ b/app/views/service-standard/8-iterate-and-improve-frequently.njk @@ -1,7 +1,6 @@ {% set pageTitle = '8. Iterate and improve frequently'%} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Make sure you have the capacity, resources and technical flexibility to iterate and improve the service frequently.' %} -{% set pageSubDescription = 'Work with your organisation to make sure that you\'re able to focus on the improvements that have the most value.' %} {% set noFollow = true %} {% set beta = 'true' %} @@ -13,37 +12,40 @@ {% block bodyContent %} -

    Why it's important

    -

    Services are never ‘finished’. Once you have got real people using your service, you need to iterate and improve it throughout its lifetime. -

    That means more than doing basic maintenance, like fixing bugs in code or deploying security patches. It means responding to feedback and changes in user needs and behaviour, clinical evidence and practice, technology and policy.

    - -

    What you should do

    -

    Your team should be able to show that you:

    -
      -
    • continue to research and respond to feedback, data and metrics and the changing context within which you work
    • -
    • have a process for reviewing all content and checking that it is up to date and reflects the latest clinical evidence, or is retired
    • -
    • understand where your priorities lie and which improvements will deliver the most value
    • -
    • have an appropriate level of resource to continue to improve the live service
    • -
    - -

    Guidance

    - -

    GOV.UK resources

    - - -

    Read more about this

    - - -

    Other help

    - - -
    -

    Updated: December 2019

    -
    +

    Work with your organisation to make sure that you're able to focus on the improvements that have the most value.

    + +

    Why it's important

    +

    Services are never ‘finished’. Once you have got real people using your service, you need to iterate and improve it throughout its lifetime. +

    That means more than doing basic maintenance, like fixing bugs in code or deploying security patches. It means responding to feedback and changes in user needs and behaviour, clinical evidence and practice, technology and policy.

    + +

    What you should do

    +

    Your team should be able to show that you:

    +
      +
    • continue to research and respond to feedback, data and metrics and the changing context within which you work
    • +
    • have a process for reviewing all content and checking that it is up to date and reflects the latest clinical evidence, or is retired
    • +
    • understand where your priorities lie and which improvements will deliver the most value
    • +
    • have an appropriate level of resource to continue to improve the live service
    • +
    + +

    Guidance

    + +

    GOV.UK resources

    + + +

    Read more about this

    + + +

    Other help

    + + +
    +

    Updated: December 2019

    +
    {% endblock %} diff --git a/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk b/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk index f16bea906..461faa8a6 100644 --- a/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk +++ b/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk @@ -1,7 +1,6 @@ {% set pageTitle = '9. Respect and protect users’ confidentiality and privacy' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Evaluate what data and information your service will be collecting, storing and providing.' %} -{% set pageSubDescription = 'Identify and address security threats, legal responsibilities, confidentialty and privacy issues and risks associated with the service. Consult experts where you need to.' %} {% set noFollow = true %} {% set beta = 'true' %} @@ -13,6 +12,8 @@ {% block bodyContent %} +

    Identify and address security threats, legal responsibilities, confidentialty and privacy issues and risks associated with the service. Consult experts where you need to.

    +

    Why it's important

    The NHS services handles some of the most sensitive personal data. It has a legal duty to protect this information. Failing to do so would undermine public trust in the health service.

    diff --git a/app/views/service-standard/about.njk b/app/views/service-standard/about.njk index 9624282d6..b2a444325 100644 --- a/app/views/service-standard/about.njk +++ b/app/views/service-standard/about.njk @@ -1,10 +1,10 @@ {% set pageTitle = 'About the NHS service standard' %} {% set pageSection = 'NHS service standard' %} -{% set pageDescription = 'The NHS service standard is designed to help teams meet the GOV.UK service standard in the context of health and care.' %} -{% set pageSubDescription = 'A few NHS teams are assessed against the GOV.UK service standard as a condition of their spend approval or because they are running a big transactional service. Other NHS teams follow the GOV.UK service standard because it\'s best practice.' %} +{% set pageDescription = 'The NHS service standard is designed to help teams meet the GOV.UK service standard in the context of health and care.' %} {% set noFollow = true %} {% set beta = 'true' %} +{% set hideDescription = 'true' %} {% extends 'includes/app-layout.njk' %} @@ -14,6 +14,10 @@ {% block bodyContent %} +

    The NHS service standard is designed to help teams meet the GOV.UK service standard in the context of health and care.

    + +

    A few NHS teams are assessed against the GOV.UK service standard as a condition of their spend approval or because they are running a big transactional service. Other NHS teams follow the GOV.UK service standard because it's best practice.

    +

    Why publish an NHS companion to the GOV.UK service standard?

    This NHS companion follows the GOV.UK standard point by point, but in our user research, we found that NHS digital teams also need:

      From ff1b9d6109f989345d8c9b03620506a9c6abe1a1 Mon Sep 17 00:00:00 2001 From: davidhunter08 Date: Sat, 23 Nov 2019 11:49:04 +0000 Subject: [PATCH 24/49] update service standard breadcrumb --- app/views/service-standard/_breadcrumb.njk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/service-standard/_breadcrumb.njk b/app/views/service-standard/_breadcrumb.njk index 5d629cfaf..cdc0109ea 100644 --- a/app/views/service-standard/_breadcrumb.njk +++ b/app/views/service-standard/_breadcrumb.njk @@ -6,5 +6,5 @@ } ], href: "/service-manual/service-standard", - text: "Service standard" + text: "NHS service standard" }) }} From 3caad6680dd149a6a34e9a3d4a8ce770972b5764 Mon Sep 17 00:00:00 2001 From: davidhunter08 Date: Sat, 23 Nov 2019 12:51:32 +0000 Subject: [PATCH 25/49] fix beta tag alignment --- app/styles/app/_app.scss | 1 + app/styles/app/_beta-banner.scss | 31 +++++++++++++++++++++++++ app/styles/main.scss | 39 +++----------------------------- 3 files changed, 35 insertions(+), 36 deletions(-) create mode 100644 app/styles/app/_beta-banner.scss diff --git a/app/styles/app/_app.scss b/app/styles/app/_app.scss index eb8105b83..d885d1518 100755 --- a/app/styles/app/_app.scss +++ b/app/styles/app/_app.scss @@ -1,4 +1,5 @@ @import 'app-reading-width'; +@import 'beta-banner'; @import 'code-block'; @import 'code-highlight'; @import 'colour-swatch'; diff --git a/app/styles/app/_beta-banner.scss b/app/styles/app/_beta-banner.scss new file mode 100644 index 000000000..00eb4dc52 --- /dev/null +++ b/app/styles/app/_beta-banner.scss @@ -0,0 +1,31 @@ +/* ========================================================================== + #BETA-BANNER + ========================================================================== */ + +.app-beta { + background: $color_nhsuk-white; + border: 1px solid $color_nhsuk-grey-5; + padding: nhsuk-spacing(2) 0; +} + +.app-beta__container { + @include mq($until: desktop) { + position: relative; + } +} + +.app-beta__content { + display: table; + margin-bottom: 0; + + .app-beta__tag { + display: block; + margin-right: nhsuk-spacing(2); + } +} + +.app-beta__text { + @include nhsuk-font($size: 16, $line-height: 1.2); + display: table-cell; + vertical-align: baseline; +} diff --git a/app/styles/main.scss b/app/styles/main.scss index d2899caed..78510affe 100755 --- a/app/styles/main.scss +++ b/app/styles/main.scss @@ -55,52 +55,19 @@ } } -// Beta banner -.app-beta { - background: $color_nhsuk-white; - border: 1px solid $color_nhsuk-grey-5; - padding: nhsuk-spacing(2) 0; -} - -.app-beta__container { - @include mq($until: desktop) { - position: relative; - } -} - -.app-beta__content { - display: table; - margin-bottom: 0; -} - -.app-beta__tag { - margin-right: nhsuk-spacing(2); -} - -.app-beta__text { - @include nhsuk-font($size: 16, $line-height: 1.2); - display: table-cell; - vertical-align: baseline; -} - // Lede text h1 + .nhsuk-lede-text { margin-top: - nhsuk-spacing(3); } -.nhsuk-lede-text { - @include mq($until: desktop) { - margin-bottom: nhsuk-spacing(5); - } -} - +// Lede sub text .nhsuk-lede-text + .app-lede-text--sub { margin-bottom: nhsuk-spacing(7); margin-top: - nhsuk-spacing(3); @include mq($until: desktop) { - margin-bottom: nhsuk-spacing(5); - margin-top: - nhsuk-spacing(2); + margin-bottom: nhsuk-spacing(6); + margin-top: - nhsuk-spacing(3); } } From a3ac7bae682208a56bbc83ba8d1a4810f75fe959 Mon Sep 17 00:00:00 2001 From: davidhunter08 Date: Sat, 23 Nov 2019 13:16:36 +0000 Subject: [PATCH 26/49] update beta banner --- app/styles/app/_beta-banner.scss | 11 ++--------- app/views/includes/beta-banner.njk | 12 ++++++++++++ app/views/includes/layout.njk | 13 +------------ 3 files changed, 15 insertions(+), 21 deletions(-) create mode 100644 app/views/includes/beta-banner.njk diff --git a/app/styles/app/_beta-banner.scss b/app/styles/app/_beta-banner.scss index 00eb4dc52..4bdf2b837 100644 --- a/app/styles/app/_beta-banner.scss +++ b/app/styles/app/_beta-banner.scss @@ -2,16 +2,9 @@ #BETA-BANNER ========================================================================== */ -.app-beta { - background: $color_nhsuk-white; - border: 1px solid $color_nhsuk-grey-5; - padding: nhsuk-spacing(2) 0; -} - .app-beta__container { - @include mq($until: desktop) { - position: relative; - } + border-bottom: 1px solid $nhsuk-border-color; + padding: nhsuk-spacing(2) 0; } .app-beta__content { diff --git a/app/views/includes/beta-banner.njk b/app/views/includes/beta-banner.njk new file mode 100644 index 000000000..28c77dd14 --- /dev/null +++ b/app/views/includes/beta-banner.njk @@ -0,0 +1,12 @@ +
      +
      +

      + + Beta + + + It is in 'beta', which means that we think it's good enough to share but we're still testing it. + +

      +
      +
      diff --git a/app/views/includes/layout.njk b/app/views/includes/layout.njk index d5160f7dd..9eca12a73 100755 --- a/app/views/includes/layout.njk +++ b/app/views/includes/layout.njk @@ -110,18 +110,7 @@ {% block outerBody %}{% endblock %} {%- if beta == 'true' %} -
      -
      -

      - - Beta - - - It is in 'beta', which means that we think it's good enough to share but we're still testing it. - -

      -
      -
      + {% include 'includes/beta-banner.njk' %} {% endif %} {% if pageLayout != 'Homepage' %} From 6ccb1c0a03f66525e95c7ad64b83ca2aafd9c8f1 Mon Sep 17 00:00:00 2001 From: davidhunter08 Date: Sun, 24 Nov 2019 11:11:34 +0000 Subject: [PATCH 27/49] remove lede text override --- app/styles/main.scss | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/styles/main.scss b/app/styles/main.scss index 78510affe..c01eb670f 100755 --- a/app/styles/main.scss +++ b/app/styles/main.scss @@ -55,11 +55,6 @@ } } -// Lede text -h1 + .nhsuk-lede-text { - margin-top: - nhsuk-spacing(3); -} - // Lede sub text .nhsuk-lede-text + .app-lede-text--sub { margin-bottom: nhsuk-spacing(7); From e8185969cad8aa6287148776cc1ab361da8627e4 Mon Sep 17 00:00:00 2001 From: davidhunter08 Date: Sun, 24 Nov 2019 11:27:43 +0000 Subject: [PATCH 28/49] add reading-width class to two-thirds layout --- app/views/includes/app-layout-two-thirds.njk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/includes/app-layout-two-thirds.njk b/app/views/includes/app-layout-two-thirds.njk index f2ea4b42b..dacc41351 100644 --- a/app/views/includes/app-layout-two-thirds.njk +++ b/app/views/includes/app-layout-two-thirds.njk @@ -2,7 +2,7 @@ {% block body %}
      -
      +

      {{pageTitle}}

      @@ -12,7 +12,7 @@ {% endif %}
      -
      +
      {% block bodyContent %} {% endblock %} From fb46bf3162d492e26712534d5377e04d32f5405c Mon Sep 17 00:00:00 2001 From: davidhunter08 Date: Sun, 24 Nov 2019 11:32:29 +0000 Subject: [PATCH 29/49] add lede text sub to service standard page --- app/views/service-standard/index.njk | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/app/views/service-standard/index.njk b/app/views/service-standard/index.njk index 24bb4b9d5..19b9cbbae 100644 --- a/app/views/service-standard/index.njk +++ b/app/views/service-standard/index.njk @@ -7,15 +7,17 @@ {% block bodyContent %} -

      The NHS service standard is designed to help teams:

      -
        -
      • meet the GOV.UK standard
      • -
      • address the different needs of health service users
      • -
      • navigate the complexities of delivering digital services in health and care
      • -
      - -

      It contains the 14 points of the GOV.UK service standard, with guidance to help teams meet them in a health context, with 3 extra points specific to health and social care.

      -

      Read more about the NHS service standard.

      +
      +

      The NHS service standard is designed to help teams:

      +
        +
      • meet the GOV.UK standard
      • +
      • address the different needs of health service users
      • +
      • navigate the complexities of delivering digital services in health and care
      • +
      + +

      It contains the 14 points of the GOV.UK service standard, with guidance to help teams meet them in a health context, with 3 extra points specific to health and social care.

      +

      Read more about the NHS service standard.

      +

      The GOV.UK service standard in the context of health

      From d78d327be66168e7ca80b4ea560e729bb75586e3 Mon Sep 17 00:00:00 2001 From: davidhunter08 Date: Sun, 24 Nov 2019 15:06:44 +0000 Subject: [PATCH 30/49] refactor content index HTML --- app/views/content/index.njk | 128 +++++++++++++++++------------------- 1 file changed, 61 insertions(+), 67 deletions(-) diff --git a/app/views/content/index.njk b/app/views/content/index.njk index 5c22e05ac..dfa86ce04 100644 --- a/app/views/content/index.njk +++ b/app/views/content/index.njk @@ -1,83 +1,77 @@ {% set pageTitle = 'Content style guide' %} {% set pageDescription = 'How to write for digital NHS services.' %} -{% extends 'includes/layout.njk' %} +{% extends 'includes/app-layout.njk' %} -{% block body %} -
      -
      -

      {{pageTitle}}

      -

      {{pageDescription}}

      -
      -
      +{% block bodyContent %} -
      -
      -

      How we write

      -

      Our general principles.

      -
      -
      -

      Voice and tone

      -

      The way we talk in different contexts.

      -
      -
      -

      Inclusive language

      -

      Writing for everyone in a way that's inclusive and respectful.

      +
      +
      +

      How we write

      +

      Our general principles.

      +
      +
      +

      Voice and tone

      +

      The way we talk in different contexts.

      +
      +
      +

      Inclusive language

      +

      Writing for everyone in a way that's inclusive and respectful.

      +
      -
      -
      -
      -

      A to Z of NHS health writing

      -

      Words and phrases which make our content easy to understand.

      -
      -
      -

      Health literacy

      -

      Why it's important and what to do about it.

      -
      -
      -

      How to write good questions for forms

      -

      Guidance on the questions to include and how to write them well.

      +
      +
      +

      A to Z of NHS health writing

      +

      Words and phrases which make our content easy to understand.

      +
      +
      +

      Health literacy

      +

      Why it's important and what to do about it.

      +
      +
      +

      How to write good questions for forms

      +

      Guidance on the questions to include and how to write them well.

      +
      -
      -
      -
      -

      Numbers, measurements, dates and time

      -

      With dosage, temperature, and statistics.

      -
      -
      -

      Formatting and punctuation

      -

      From abbreviations to question marks.

      -
      -
      -

      PDFs

      -

      Why we avoid PDFs and how we manage them

      +
      +
      +

      Numbers, measurements, dates and time

      +

      With dosage, temperature, and statistics.

      +
      +
      +

      Formatting and punctuation

      +

      From abbreviations to question marks.

      +
      +
      +

      PDFs

      +

      Why we avoid PDFs and how we manage them

      +
      -
      -
      -
      -

      Links

      -

      Writing good links, including linking to PDFs

      +
      +
      +

      Links

      +

      Writing good links, including linking to PDFs

      +
      -
      -
      -
      -

      Using the style guide

      -

      This style guide is for anyone creating content for the NHS, to help make things clear and consistent across all of our services.

      -

      It's meant as a guide, not a rulebook. You're welcome to adapt a style pattern if it does not meet your users' needs.

      -

      In progress

      -

      The guide will grow and change as we learn more about the language and writing styles that work best for our users.

      -

      Join the service manual Slack workspace or email service-manual@nhs.net to hear about and discuss changes.

      -

      Check the GOV.UK A to Z style guide and GOV.UK content design guide for any points of style that you do not find here. If it's not there, we recommend using the Oxford Dictionary for Writers and Editors.

      -

      Contribute

      -

      Let us know if you design a new content pattern or find new evidence on content style.

      -
      -

      Updated: November 2019

      -
      +

      Using the style guide

      +

      This style guide is for anyone creating content for the NHS, to help make things clear and consistent across all of our services.

      +

      It's meant as a guide, not a rulebook. You're welcome to adapt a style pattern if it does not meet your users' needs.

      + +

      In progress

      +

      The guide will grow and change as we learn more about the language and writing styles that work best for our users.

      +

      Join the service manual Slack workspace or email service-manual@nhs.net to hear about and discuss changes.

      +

      Check the GOV.UK A to Z style guide and GOV.UK content design guide for any points of style that you do not find here. If it's not there, we recommend using the Oxford Dictionary for Writers and Editors.

      + +

      Contribute

      +

      Let us know if you design a new content pattern or find new evidence on content style.

      + +
      +

      Updated: November 2019

      -
      + {% endblock %} From 67c95e27c350121839bbf87d42b8fa16e40edc1b Mon Sep 17 00:00:00 2001 From: davidhunter08 Date: Sun, 24 Nov 2019 15:16:14 +0000 Subject: [PATCH 31/49] update spacing on content index page --- app/views/content/index.njk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/content/index.njk b/app/views/content/index.njk index dfa86ce04..e826c7f27 100644 --- a/app/views/content/index.njk +++ b/app/views/content/index.njk @@ -5,7 +5,7 @@ {% block bodyContent %} -
      +

      How we write

      Our general principles.

      From cccbfa077fc2e6b8ee9f733e9c4f9dfabdb97195 Mon Sep 17 00:00:00 2001 From: Sara Wilcox Date: Thu, 28 Nov 2019 14:45:17 +0000 Subject: [PATCH 32/49] Update service standard --- ...nd-be-open-about-how-your-service-is-performing.njk | 2 +- .../11-choose-the-right-tools-and-technology.njk | 2 +- .../service-standard/12-make-new-source-code-open.njk | 4 ++-- ...o-open-standards-common-components-and-patterns.njk | 6 +++--- .../16-make-your-service-clinically-safe.njk | 2 +- .../17-make-your-service-interoperable.njk | 4 ++-- .../5-make-sure-everyone-can-use-the-service.njk | 2 +- ...ludes-multidisciplinary-skills-and-perspectives.njk | 3 ++- .../service-standard/7-use-agile-ways-of-working.njk | 6 +++--- .../8-iterate-and-improve-frequently.njk | 2 +- ...t-and-protect-users-confidentiality-and-privacy.njk | 4 ++-- app/views/service-standard/about.njk | 10 +++++----- app/views/service-standard/index.njk | 4 ++-- 13 files changed, 26 insertions(+), 25 deletions(-) diff --git a/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk b/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk index b097b602b..d00002d94 100644 --- a/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk +++ b/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk @@ -15,7 +15,7 @@

      Collect performance information across all channels so that you can measure and show that the service is effective and improving.

      Why it's important

      -

      Having clear objectives, a definition of what success looks like and appropriate metrics means that you’ll know whether the service is solving the problem it’s meant to solve.

      +

      Having clear objectives, a definition of what success looks like and appropriate metrics means that you'll know whether the service is solving the problem it's meant to solve.

      Collecting the right information will alert you to improvements you need to make and help you know if changes have the effect you intend.

      Services funded by public money should be transparent about how they are performing.

      diff --git a/app/views/service-standard/11-choose-the-right-tools-and-technology.njk b/app/views/service-standard/11-choose-the-right-tools-and-technology.njk index 7288f2cb0..b9d0d3561 100644 --- a/app/views/service-standard/11-choose-the-right-tools-and-technology.njk +++ b/app/views/service-standard/11-choose-the-right-tools-and-technology.njk @@ -15,7 +15,7 @@

      Build a sustainable service which allows you to change direction in future.

      Why it's important

      -

      When you make a decision about technology, you’re making a significant investment. The choices you make will have a huge impact on your ability to create, iterate and operate the service in a flexible, sustainable way.

      +

      When you make a decision about technology, you're making a significant investment. The choices you make will have a huge impact on your ability to create, iterate and operate the service in a flexible, sustainable way.

      What you should do

      When considering technical architecture, choice of programming languages, development toolchain and other technology choices, your team should be able to show that you:

      diff --git a/app/views/service-standard/12-make-new-source-code-open.njk b/app/views/service-standard/12-make-new-source-code-open.njk index 6ff8cc94d..e0ec02950 100644 --- a/app/views/service-standard/12-make-new-source-code-open.njk +++ b/app/views/service-standard/12-make-new-source-code-open.njk @@ -13,8 +13,8 @@ {% block bodyContent %}

      Why it's important

      -

      Public services are built with public money. So unless there’s a good reason not to, the code they’re based should be made available for other people to reuse and build on.

      -

      Open source code can save teams duplicating effort and help them build better services faster. And publishing source code under an open licence means that you’re less likely to get locked in to working with a single supplier.

      +

      Public services are built with public money. So unless there's a good reason not to, the code they're based should be made available for other people to reuse and build on.

      +

      Open source code can save teams duplicating effort and help them build better services faster. And publishing source code under an open licence means that you're less likely to get locked in to working with a single supplier.

      What you should do

      Your team should be able to show that you:

      diff --git a/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk b/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk index 68042047d..6a7bcbebb 100644 --- a/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk +++ b/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk @@ -1,6 +1,6 @@ {% set pageTitle = '13. Use and contribute to open standards, common components and patterns' %} {% set pageSection = 'NHS service standard' %} -{% set pageDescription = 'Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK design system.' %} +{% set pageDescription = 'Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK Design System.' %} {% set noFollow = true %} {% set beta = 'true' %} {% set hideDescription = 'true' %} @@ -13,7 +13,7 @@ {% block bodyContent %} -

      Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK design system.

      +

      Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK Design System.

      Use open standards, and propose a new open standard if there is not one that already meets your needs.

      @@ -39,7 +39,7 @@

      GOV.UK resources

      Other help

      diff --git a/app/views/service-standard/16-make-your-service-clinically-safe.njk b/app/views/service-standard/16-make-your-service-clinically-safe.njk index bcaeca1b1..8edbd59bf 100644 --- a/app/views/service-standard/16-make-your-service-clinically-safe.njk +++ b/app/views/service-standard/16-make-your-service-clinically-safe.njk @@ -29,7 +29,7 @@
    • where appropriate, comply with NICE's Evidence standards framework for digital health technologies

    If you provide online primary care services, you must register with the Care Quality Commission.

    -

    If your app is a medical device, you must follow guidance from the Medicines and Healthcare products Regulatory Agency (MHRA).

    +

    If your app is a medical device, you must follow the guidance on medical devices from the Medicines and Healthcare products Regulatory Agency (MHRA).

    Guidance

    diff --git a/app/views/service-standard/17-make-your-service-interoperable.njk b/app/views/service-standard/17-make-your-service-interoperable.njk index 0e7f3c8e7..2f386bc4a 100644 --- a/app/views/service-standard/17-make-your-service-interoperable.njk +++ b/app/views/service-standard/17-make-your-service-interoperable.njk @@ -20,7 +20,7 @@
    • you work to open standards and the Technology Code of Practice
    • you maximise flexibility and make content, tools and services available through well-designed APIs to reach more people
    • -
    • you use agreed FIHR-based APIs to join up care for patients
    • +
    • you use agreed FHIR-based APIs to join up care for patients
    • where appropriate, you use the NHS number and NHS data registers and comply with NHS clinical information standards
    • for disease information in mortality and morbidity statistics, you use ICD-10 (the World Health Organization's International Classification of Diseases, version 10)
    • for electronic care records, you use SNOMED CT (structured clinical vocabulary)
    • @@ -44,7 +44,7 @@
      • The API hub in the Health Developer Network (NHS Digital)
      • Code of conduct for data-driven health and care technology (Department of Health and Social Care)
      • -
      • ICD-10 - the World Health Organization's International Classification of Diseases, version 10 (WHO)
      • +
      • ICD-10, version: 2016 - the World Health Organization's International Classification of Diseases (WHO)
      • ISB 0149 NHS number - this information standard sets out the scope and use of the NHS number (NHS Digital)
      • NHS API developer portal (NHS.UK)
      • NHS clinical information standards (NHS Digital - beta)
      • diff --git a/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk b/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk index 51887308c..2cc4be76d 100644 --- a/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk +++ b/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk @@ -33,7 +33,7 @@

        NHS digital service manual

        diff --git a/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk b/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk index fb0f627f3..95a97d9df 100644 --- a/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk +++ b/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk @@ -28,7 +28,7 @@
      • has access to the specialist expertise it needs (for example clinical, legal or policy expertise, from inside or outside the organisation)
      • will help you deal with what you believe are your riskiest assumptions
      -

      If the team is working with contractors and outside suppliers, you must make sure it’s on a sustainable basis.

      +

      If the team is working with contractors and outside suppliers, you must make sure it's on a sustainable basis.

      Guidance

      NHS service manual

      @@ -36,6 +36,7 @@

      GOV.UK resources

      diff --git a/app/views/service-standard/7-use-agile-ways-of-working.njk b/app/views/service-standard/7-use-agile-ways-of-working.njk index 35a4f584b..388752102 100644 --- a/app/views/service-standard/7-use-agile-ways-of-working.njk +++ b/app/views/service-standard/7-use-agile-ways-of-working.njk @@ -15,15 +15,15 @@

      Resource them flexibly.

      Why it's important

      -

      Using agile, iterative, user-centred ways of working will help you get your service in front of real users as soon as possible. Then observing and analysing data on how they use it, and iterating the service based on what you’ve learned.

      -

      Because you’re not specifying everything up front before you’ve developed an understanding of what users need, you will reduce the risk of delivering the wrong thing.

      +

      Using agile, iterative, user-centred ways of working will help you get your service in front of real users as soon as possible. Then observing and analysing data on how they use it, and iterating the service based on what you've learned.

      +

      Because you're not specifying everything up front before you've developed an understanding of what users need, you will reduce the risk of delivering the wrong thing.

      What you should do

      Your team should be able to show that you:

      • use agile ways of working, researching, learning and changing as you go
      • make decisions with senior stakeholders that allow you to adapt and change
      • -
      • make sure that the right people know what’s happening at the right level of detail
      • +
      • make sure that the right people know what's happening at the right level of detail
      • are resourced flexibly
      diff --git a/app/views/service-standard/8-iterate-and-improve-frequently.njk b/app/views/service-standard/8-iterate-and-improve-frequently.njk index 0b59b1240..93c2e86ef 100644 --- a/app/views/service-standard/8-iterate-and-improve-frequently.njk +++ b/app/views/service-standard/8-iterate-and-improve-frequently.njk @@ -15,7 +15,7 @@

      Work with your organisation to make sure that you're able to focus on the improvements that have the most value.

      Why it's important

      -

      Services are never ‘finished’. Once you have got real people using your service, you need to iterate and improve it throughout its lifetime. +

      Services are never "finished". Once you have got real people using your service, you need to iterate and improve it throughout its lifetime.

      That means more than doing basic maintenance, like fixing bugs in code or deploying security patches. It means responding to feedback and changes in user needs and behaviour, clinical evidence and practice, technology and policy.

      What you should do

      diff --git a/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk b/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk index 461faa8a6..b6df39d83 100644 --- a/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk +++ b/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk @@ -15,7 +15,7 @@

      Identify and address security threats, legal responsibilities, confidentialty and privacy issues and risks associated with the service. Consult experts where you need to.

      Why it's important

      -

      The NHS services handles some of the most sensitive personal data. It has a legal duty to protect this information. Failing to do so would undermine public trust in the health service.

      +

      The NHS handles some of the most sensitive personal data. It has a legal duty to protect this information. Failing to do so would undermine public trust in the health service.

      What you should do

      Your team should be able to show that you:

      @@ -47,7 +47,7 @@
    • Data security and protection toolkit (NHS Digital)
    • Guide to the General Data Protection Regulation (GDPR) (Information Commissioner's Office)
    • Identity verification and authentication standard for digital health and care services, DCB3051 (NHS Digital)
    • -
    • National Data Guardian for Health and Care (GOV.UK)
    • +
    • National Data Guardian for health and care(GOV.UK)
    • NHS login
    diff --git a/app/views/service-standard/about.njk b/app/views/service-standard/about.njk index b2a444325..78a026beb 100644 --- a/app/views/service-standard/about.njk +++ b/app/views/service-standard/about.njk @@ -16,13 +16,13 @@

    The NHS service standard is designed to help teams meet the GOV.UK service standard in the context of health and care.

    -

    A few NHS teams are assessed against the GOV.UK service standard as a condition of their spend approval or because they are running a big transactional service. Other NHS teams follow the GOV.UK service standard because it's best practice.

    +

    A few NHS teams are assessed against the GOV.UK service standard. Other NHS teams follow the GOV.UK service standard because it's best practice.

    Why publish an NHS companion to the GOV.UK service standard?

    This NHS companion follows the GOV.UK standard point by point, but in our user research, we found that NHS digital teams also need:

    @@ -34,12 +34,12 @@

    For example:

      -
    • health 'journeys' are more fragmented and multi-layered than many government services
    • +
    • health "journeys" are more fragmented and multi-layered than many government services
    • digital services in the NHS are much more likely to need to support face to face contact
    • -
    • multi-disciplinary teams are not common in the NHS - by 'multi-disciplinary' we mean teams made up of product and delivery managers, designers, developers, user researchers and content designers
    • +
    • multi-disciplinary teams are not common in the NHS - by "multi-disciplinary" we mean teams made up of product and delivery managers, designers, developers, user researchers and content designers
    • NHS delivery teams are less likely to be practising user-centred design and agile service delivery
    • measuring outcomes is often more complex for health
    • -
    • more products and services are commissioned locally, for example in hospital trusts, and they are more likely to rely on suppliers, long-term contracts and ‘off the shelf' solutions
    • +
    • more products and services are commissioned locally, for example in hospital trusts, and they are more likely to rely on suppliers, long-term contracts and "off the shelf" solutions

    In our user research, we saw evidence of the power of the NHS logo to unify teams, make the GOV.UK standard relevant and encourage people to work to it.

    diff --git a/app/views/service-standard/index.njk b/app/views/service-standard/index.njk index 19b9cbbae..ecc93b099 100644 --- a/app/views/service-standard/index.njk +++ b/app/views/service-standard/index.njk @@ -10,7 +10,7 @@

    The NHS service standard is designed to help teams:

      -
    • meet the GOV.UK standard
    • +
    • meet the GOV.UK service standard
    • address the different needs of health service users
    • navigate the complexities of delivering digital services in health and care
    @@ -182,7 +182,7 @@ Use and contribute to open standards, common components and patterns -

    Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK design system.

    +

    Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK Design System.

    Use open standards, and propose a new open standard if there is not one that already meets your needs.

    Read more about point 13.

    From 681e185cef8b55483fca9cbe841bcc0f35ddf9b9 Mon Sep 17 00:00:00 2001 From: davidhunter08 Date: Sun, 8 Dec 2019 17:04:22 +0000 Subject: [PATCH 33/49] replace app-lede-text__sub with nhsuk-lede-text --- app/styles/main.scss | 15 ++------------- ...rs-and-their-needs-context-health-and-care.njk | 2 +- ...-open-about-how-your-service-is-performing.njk | 2 +- .../11-choose-the-right-tools-and-technology.njk | 2 +- ...n-standards-common-components-and-patterns.njk | 2 +- .../15-support-a-culture-of-care.njk | 2 +- .../16-make-your-service-clinically-safe.njk | 2 +- ...problem-and-provide-a-joined-up-experience.njk | 2 +- .../4-make-the-service-simple-to-use.njk | 2 +- .../5-make-sure-everyone-can-use-the-service.njk | 2 +- ...-multidisciplinary-skills-and-perspectives.njk | 2 +- .../7-use-agile-ways-of-working.njk | 2 +- .../8-iterate-and-improve-frequently.njk | 2 +- ...-protect-users-confidentiality-and-privacy.njk | 2 +- app/views/service-standard/about.njk | 2 +- app/views/service-standard/index.njk | 2 +- 16 files changed, 17 insertions(+), 28 deletions(-) diff --git a/app/styles/main.scss b/app/styles/main.scss index c01eb670f..8e8afffc2 100755 --- a/app/styles/main.scss +++ b/app/styles/main.scss @@ -55,18 +55,7 @@ } } -// Lede sub text -.nhsuk-lede-text + .app-lede-text--sub { - margin-bottom: nhsuk-spacing(7); +// Lede text + lede text +.nhsuk-lede-text + .nhsuk-lede-text { margin-top: - nhsuk-spacing(3); - - @include mq($until: desktop) { - margin-bottom: nhsuk-spacing(6); - margin-top: - nhsuk-spacing(3); - } -} - -.app-lede-text--sub + h2, -.app-lede-text--sub + .nhsuk-heading-l { - padding-top: 0; } diff --git a/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk b/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk index 0406b9eff..ac5a33ded 100644 --- a/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk +++ b/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk @@ -12,7 +12,7 @@ {% block bodyContent %} -

    Think about people's entire experience and the systems and processes around the product or service you're building.

    +

    Think about people's entire experience and the systems and processes around the product or service you're building.

    Why it's important

    Lots of products and services are not useful for users. Others are frustrating and hard to use. You need to understand your users and their needs - from their point of view - to build something that helps them.

    diff --git a/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk b/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk index d00002d94..56523defb 100644 --- a/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk +++ b/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk @@ -12,7 +12,7 @@ {% block bodyContent %} -

    Collect performance information across all channels so that you can measure and show that the service is effective and improving.

    +

    Collect performance information across all channels so that you can measure and show that the service is effective and improving.

    Why it's important

    Having clear objectives, a definition of what success looks like and appropriate metrics means that you'll know whether the service is solving the problem it's meant to solve.

    diff --git a/app/views/service-standard/11-choose-the-right-tools-and-technology.njk b/app/views/service-standard/11-choose-the-right-tools-and-technology.njk index b9d0d3561..f0d958c92 100644 --- a/app/views/service-standard/11-choose-the-right-tools-and-technology.njk +++ b/app/views/service-standard/11-choose-the-right-tools-and-technology.njk @@ -12,7 +12,7 @@ {% block bodyContent %} -

    Build a sustainable service which allows you to change direction in future.

    +

    Build a sustainable service which allows you to change direction in future.

    Why it's important

    When you make a decision about technology, you're making a significant investment. The choices you make will have a huge impact on your ability to create, iterate and operate the service in a flexible, sustainable way.

    diff --git a/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk b/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk index 6a7bcbebb..50acb3354 100644 --- a/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk +++ b/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk @@ -15,7 +15,7 @@

    Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK Design System.

    -

    Use open standards, and propose a new open standard if there is not one that already meets your needs.

    +

    Use open standards, and propose a new open standard if there is not one that already meets your needs.

    Why it's important

    Using common components and patterns means you do not have to solve problems that have already been solved. By using a component or pattern that’s already been extensively tested, you can provide users with a good experience in a cost effective way.

    diff --git a/app/views/service-standard/15-support-a-culture-of-care.njk b/app/views/service-standard/15-support-a-culture-of-care.njk index e272ade67..5f9b53d86 100644 --- a/app/views/service-standard/15-support-a-culture-of-care.njk +++ b/app/views/service-standard/15-support-a-culture-of-care.njk @@ -12,7 +12,7 @@ {% block bodyContent %} -

    All services should make patients, the public and staff feel valued and supported and, as far as possible, involve people in their own care.

    +

    All services should make patients, the public and staff feel valued and supported and, as far as possible, involve people in their own care.

    Why it's important

    Digital services are not excluded from the NHS commitment to care and compassion. Small things make a difference when people are, for example, sick or stressed, grieving or dying.

    diff --git a/app/views/service-standard/16-make-your-service-clinically-safe.njk b/app/views/service-standard/16-make-your-service-clinically-safe.njk index 8edbd59bf..7ab44b4af 100644 --- a/app/views/service-standard/16-make-your-service-clinically-safe.njk +++ b/app/views/service-standard/16-make-your-service-clinically-safe.njk @@ -12,7 +12,7 @@ {% block bodyContent %} -

    Make sure that you actively manage any safety risks associated with your content, service and processes.

    +

    Make sure that you actively manage any safety risks associated with your content, service and processes.

    Why it's important

    Clinical risk management is key to creating safe digital services. Work with your clinical safety officer to consider what could go wrong, how serious it could be, and how likely it is, so that you can minimise the risk of harm.

    diff --git a/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk b/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk index 887e4ab56..de5653e99 100644 --- a/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk +++ b/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk @@ -13,7 +13,7 @@ {% block bodyContent %} -

    Collaborate across team, programme and organisational boundaries and create a service that meets users' needs across all channels.

    +

    Collaborate across team, programme and organisational boundaries and create a service that meets users' needs across all channels.

    Why it's important

    Health is complex. People often do not know how health and care organisations and services fit together. It helps if you can bring things together into a journey which makes sense to users, irrespective of which organisation they "belong" to or the channel they use.

    diff --git a/app/views/service-standard/4-make-the-service-simple-to-use.njk b/app/views/service-standard/4-make-the-service-simple-to-use.njk index 804368aa8..67429b9fa 100644 --- a/app/views/service-standard/4-make-the-service-simple-to-use.njk +++ b/app/views/service-standard/4-make-the-service-simple-to-use.njk @@ -12,7 +12,7 @@ {% block bodyContent %} -

    Healthcare journeys can be complex. Do the hard work to make things simpler.

    +

    Healthcare journeys can be complex. Do the hard work to make things simpler.

    Why it's important

    People expect services to just work. They need things to be easy when they're worried or ill. And NHS staff need services that are easy to use so that they can focus on patient care.

    diff --git a/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk b/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk index 2cc4be76d..afe83e7a1 100644 --- a/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk +++ b/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk @@ -12,7 +12,7 @@ {% block bodyContent %} -

    Also people who do not have access to the internet or lack the skills or confidence to use it.

    +

    Also people who do not have access to the internet or lack the skills or confidence to use it.

    Why it's important

    NHS services are for everyone. We have a duty to consider everyone’s needs when we’re designing and delivering services.

    diff --git a/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk b/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk index 95a97d9df..f80a9d460 100644 --- a/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk +++ b/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk @@ -12,7 +12,7 @@ {% block bodyContent %} -

    Make as many decisions as possible in the team so that you can respond quickly to what you learn about users and their needs.

    +

    Make as many decisions as possible in the team so that you can respond quickly to what you learn about users and their needs.

    Why it's important

    A team with diversity of expertise and perspectives is more likely to come up with the best solution. The size and roles you'll need will change as you build the service.

    diff --git a/app/views/service-standard/7-use-agile-ways-of-working.njk b/app/views/service-standard/7-use-agile-ways-of-working.njk index 388752102..37fa0eff8 100644 --- a/app/views/service-standard/7-use-agile-ways-of-working.njk +++ b/app/views/service-standard/7-use-agile-ways-of-working.njk @@ -12,7 +12,7 @@ {% block bodyContent %} -

    Resource them flexibly.

    +

    Resource them flexibly.

    Why it's important

    Using agile, iterative, user-centred ways of working will help you get your service in front of real users as soon as possible. Then observing and analysing data on how they use it, and iterating the service based on what you've learned.

    diff --git a/app/views/service-standard/8-iterate-and-improve-frequently.njk b/app/views/service-standard/8-iterate-and-improve-frequently.njk index 93c2e86ef..9e656c44d 100644 --- a/app/views/service-standard/8-iterate-and-improve-frequently.njk +++ b/app/views/service-standard/8-iterate-and-improve-frequently.njk @@ -12,7 +12,7 @@ {% block bodyContent %} -

    Work with your organisation to make sure that you're able to focus on the improvements that have the most value.

    +

    Work with your organisation to make sure that you're able to focus on the improvements that have the most value.

    Why it's important

    Services are never "finished". Once you have got real people using your service, you need to iterate and improve it throughout its lifetime. diff --git a/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk b/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk index b6df39d83..433eca0c3 100644 --- a/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk +++ b/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk @@ -12,7 +12,7 @@ {% block bodyContent %} -

    Identify and address security threats, legal responsibilities, confidentialty and privacy issues and risks associated with the service. Consult experts where you need to.

    +

    Identify and address security threats, legal responsibilities, confidentialty and privacy issues and risks associated with the service. Consult experts where you need to.

    Why it's important

    The NHS handles some of the most sensitive personal data. It has a legal duty to protect this information. Failing to do so would undermine public trust in the health service.

    diff --git a/app/views/service-standard/about.njk b/app/views/service-standard/about.njk index 78a026beb..14aa6c624 100644 --- a/app/views/service-standard/about.njk +++ b/app/views/service-standard/about.njk @@ -16,7 +16,7 @@

    The NHS service standard is designed to help teams meet the GOV.UK service standard in the context of health and care.

    -

    A few NHS teams are assessed against the GOV.UK service standard. Other NHS teams follow the GOV.UK service standard because it's best practice.

    +

    A few NHS teams are assessed against the GOV.UK service standard. Other NHS teams follow the GOV.UK service standard because it's best practice.

    Why publish an NHS companion to the GOV.UK service standard?

    This NHS companion follows the GOV.UK standard point by point, but in our user research, we found that NHS digital teams also need:

    diff --git a/app/views/service-standard/index.njk b/app/views/service-standard/index.njk index ecc93b099..1c955d6e5 100644 --- a/app/views/service-standard/index.njk +++ b/app/views/service-standard/index.njk @@ -7,7 +7,7 @@ {% block bodyContent %} -
    +

    The NHS service standard is designed to help teams:

    • meet the GOV.UK service standard
    • From 6207532ca903e53a07cb373da553c48cb4d9b299 Mon Sep 17 00:00:00 2001 From: davidhunter08 Date: Sun, 8 Dec 2019 17:07:48 +0000 Subject: [PATCH 34/49] add back in app-lede-text--sub text to service standard index page --- app/styles/main.scss | 16 ++++++++++++++++ app/views/service-standard/about.njk | 2 +- app/views/service-standard/index.njk | 2 +- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/styles/main.scss b/app/styles/main.scss index 8e8afffc2..6cce8b852 100755 --- a/app/styles/main.scss +++ b/app/styles/main.scss @@ -59,3 +59,19 @@ .nhsuk-lede-text + .nhsuk-lede-text { margin-top: - nhsuk-spacing(3); } + +// Lede sub text +.nhsuk-lede-text + .app-lede-text--sub { + margin-bottom: nhsuk-spacing(7); + margin-top: - nhsuk-spacing(3); + + @include mq($until: desktop) { + margin-bottom: nhsuk-spacing(6); + margin-top: - nhsuk-spacing(3); + } +} + +.app-lede-text--sub + h2, +.app-lede-text--sub + .nhsuk-heading-l { + padding-top: 0; +} diff --git a/app/views/service-standard/about.njk b/app/views/service-standard/about.njk index 14aa6c624..78a026beb 100644 --- a/app/views/service-standard/about.njk +++ b/app/views/service-standard/about.njk @@ -16,7 +16,7 @@

      The NHS service standard is designed to help teams meet the GOV.UK service standard in the context of health and care.

      -

      A few NHS teams are assessed against the GOV.UK service standard. Other NHS teams follow the GOV.UK service standard because it's best practice.

      +

      A few NHS teams are assessed against the GOV.UK service standard. Other NHS teams follow the GOV.UK service standard because it's best practice.

      Why publish an NHS companion to the GOV.UK service standard?

      This NHS companion follows the GOV.UK standard point by point, but in our user research, we found that NHS digital teams also need:

      diff --git a/app/views/service-standard/index.njk b/app/views/service-standard/index.njk index 1c955d6e5..ecc93b099 100644 --- a/app/views/service-standard/index.njk +++ b/app/views/service-standard/index.njk @@ -7,7 +7,7 @@ {% block bodyContent %} -
      +

      The NHS service standard is designed to help teams:

      • meet the GOV.UK service standard
      • From c4a195fa22fcb05ed6b33f6c8fb533f331cbd28b Mon Sep 17 00:00:00 2001 From: Sabeeh UL-Hassan Date: Tue, 10 Dec 2019 10:55:23 +0000 Subject: [PATCH 35/49] add synonyms --- middleware/page-index-additions.js | 70 +++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 2 deletions(-) diff --git a/middleware/page-index-additions.js b/middleware/page-index-additions.js index 2c7dd42eb..b704c8de6 100644 --- a/middleware/page-index-additions.js +++ b/middleware/page-index-additions.js @@ -1,11 +1,77 @@ +// Page specific const additionalIndices = { '/service-manual/accessibility/testing': ['svg'], + '/service-manual/styles-components-patterns': ['elements'], + '/service-manual/styles-components-patterns/action-link': ['call to action, cta'], + '/service-manual/styles-components-patterns/back-link': ['return link, back button'], + '/service-manual/styles-components-patterns/breadcrumbs': ['navigation path, cookie crumb'], + '/service-manual/styles-components-patterns/care-cards': ['non-urgent care card, blue care card, red care card, immediate care card, emergency care card'], + '/service-manual/styles-components-patterns/checkboxes': ['check boxes, tickboxes, tick boxes'], + '/service-manual/styles-components-patterns/colour': ['palette'], + '/service-manual/styles-components-patterns/details': ['reveal, progressive disclosure, hidden text, show and hide'], + '/service-manual/styles-components-patterns/error-message': ['validation message'], + '/service-manual/styles-components-patterns/expander': ['reveal, accordion'], + '/service-manual/styles-components-patterns/header': ['banner'], + '/service-manual/styles-components-patterns/images': ['pictures, photos'], + '/service-manual/styles-components-patterns/inset-text': ['information, highlighted text, callout'], + '/service-manual/styles-components-patterns/layout': ['grid'], + '/service-manual/styles-components-patterns/pagination': ['previous page, next page'], + '/service-manual/styles-components-patterns/radios': ['radio buttons, option buttons'], + '/service-manual/styles-components-patterns/review-date': ['date updated'], + '/service-manual/styles-components-patterns/select': ['drop down menu, list box, drop down list, combo box, pop-up menu'], + '/service-manual/styles-components-patterns/skip-link': ['skip to body content, Skip navigation link'], + '/service-manual/styles-components-patterns/spacing': ['margin, padding'], + '/service-manual/styles-components-patterns/summary-list': ['definition list'], + '/service-manual/styles-components-patterns/text-input': ['text box, text field, input field, text entry box'], + '/service-manual/styles-components-patterns/textarea': ['big text box, multi-line text box, multi-line text field'], + '/service-manual/styles-components-patterns/typography': ['fonts'], + '/service-manual/styles-components-patterns/warning-callout': ['yellow callout, warning box, important'], }; +// Term specific const alternativeSpelling = { + 'components': ['elements'], 'alzheimer’s': ['alzheimers', 'alzheimer'], - fever: ['temperature'], - temperature: ['fever'], + 'fever': ['temperature'], + 'temperature': ['fever'], + 'foetus': ['fetus'], + 'A&E': ['accident and emergency'], + 'ageing': ['aging'], + 'alzheimer’s disease': ['Alzheimers disease'], + '&': ['ampersand'], + 'breast milk': ['breastmilk'], + 'dietitian': ['dietician'], + '5 A Day': ['Five A Day'], + 'faeces': ['feces'], + 'flu': ['influenza'], + 'GP surgery': ['GP practice'], + 'haemorrhage': ['hemorrhage'], + 'healthcare': ['health care'], + 'home help': ['homehelp'], + 'ie': ['i.e.'], + 'eg': ['e.g.'], + 'immunisation': ['immunization'], + 'inpatient': ['in-patient'], + 'lip-reading ': ['lipreading'], + 'mad cow disease': ['mad cow’s disease'], + 'microgram': ['mcg'], + 'OK': ['okay'], + 'organisations': ['organizations'], + 'outpatient': ['out-patient'], + 'PMS (premenstrual syndrome)': ['pre-menstrual syndrome'], + 'practice': ['practise'], + 'preconception care': ['pre-conception care'], + 'summary care record': ['SCR'], + 'tranquillise': ['tranquillize'], + 'tranquilliser': ['tranqullizer'], + 'urinary tract infections': ['UTIs'], + 'STI': ['STD'], + 'walk-in centre': ['walk in centre'], + 'wellbeing': ['well-being'], + 'X-ray': ['xray'], + 'zimmer frame': ['zimmerframe'], + 'filter questions': ['branch questions, Yes and No questions'], + 'sensitivities': ['sensitive questions'], }; const indexBlacklist = [ From f6696ef89556252cd0d3bb29e4e6fa4e00292e47 Mon Sep 17 00:00:00 2001 From: Sabeeh UL-Hassan Date: Tue, 10 Dec 2019 11:20:36 +0000 Subject: [PATCH 36/49] add details page to sitemap --- app/views/sitemap.njk | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/sitemap.njk b/app/views/sitemap.njk index 2e41942b8..7718ab408 100644 --- a/app/views/sitemap.njk +++ b/app/views/sitemap.njk @@ -39,6 +39,7 @@
      • Colour
      • Contents list
      • Date input
      • +
      • Details
      • Do and Don't lists
      • Error message
      • Error summary
      • From bc3d22ff268768f0cf8de9b4f991d31df2c322fe Mon Sep 17 00:00:00 2001 From: AdamChrimes Date: Tue, 10 Dec 2019 11:41:12 +0000 Subject: [PATCH 37/49] undo JavaScript refactoring as it broke the logic --- app.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app.js b/app.js index de0c83521..5c12296e1 100755 --- a/app.js +++ b/app.js @@ -73,9 +73,11 @@ app.get('/service-manual/design-example/:example', (req, res) => { const exampleHtml = fileHelper.getHTMLCode(examplePath); // Wrap the example HTML in a basic html base template. - const baseTemplate = displayFullPage - ? 'includes/design-example-wrapper.njk' - : 'includes/design-example-wrapper-full.njk'; + var baseTemplate = 'includes/design-example-wrapper.njk'; + if (displayFullPage) { + baseTemplate = 'includes/design-example-wrapper-full.njk'; + } + res.render(baseTemplate, { body: exampleHtml }); }); From 394a56731203d37cf47198c32f3cf724f5ef01a2 Mon Sep 17 00:00:00 2001 From: AdamChrimes Date: Tue, 10 Dec 2019 11:52:45 +0000 Subject: [PATCH 38/49] fix the CSS linting issues --- app/styles/app/_search.scss | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/styles/app/_search.scss b/app/styles/app/_search.scss index 9e5b35a52..ae421014f 100644 --- a/app/styles/app/_search.scss +++ b/app/styles/app/_search.scss @@ -97,7 +97,7 @@ &:focus { background-color: $nhsuk-focus-color; - border-bottom: 4px solid #212b32; + border-bottom: 4px solid $nhsuk-text-color; .nhsuk-icon__search { fill: $nhsuk-focus-text-color; @@ -136,7 +136,8 @@ } } - &:hover, &:focus { + &:hover, + &:focus { .autocomplete__option-title { text-decoration: none; } From 5f55b703b00e7abcc17f82c2fd24e6fac320de1f Mon Sep 17 00:00:00 2001 From: AdamChrimes Date: Tue, 10 Dec 2019 15:12:30 +0000 Subject: [PATCH 39/49] add missing Links page to the sitemap --- app/views/sitemap.njk | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/sitemap.njk b/app/views/sitemap.njk index 7718ab408..188024599 100644 --- a/app/views/sitemap.njk +++ b/app/views/sitemap.njk @@ -97,6 +97,7 @@
      • Numbers, measurements, dates and time
      • Formatting and punctuation
      • PDFs
      • +
      • Links
    • From 61bcb4bbaf6656be3f8e2af8425c76c6b3c5c0a8 Mon Sep 17 00:00:00 2001 From: AdamChrimes Date: Tue, 10 Dec 2019 15:13:22 +0000 Subject: [PATCH 40/49] use the correct accessibility statement page in sitemap --- app/views/sitemap.njk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/sitemap.njk b/app/views/sitemap.njk index 188024599..9c5ae025b 100644 --- a/app/views/sitemap.njk +++ b/app/views/sitemap.njk @@ -108,7 +108,7 @@
    • Work on a new thing
  • -
  • Accessibility
  • +
  • Accessibility statement
  • Terms and conditions
  • Privacy
  • From caa4af28311dd2a9b76e1d5e60acb79239b0d9d0 Mon Sep 17 00:00:00 2001 From: AdamChrimes Date: Tue, 10 Dec 2019 15:17:54 +0000 Subject: [PATCH 41/49] populate the change log for the 2.0.0 search release --- CHANGELOG.md | 10 ++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 69cee4e42..1ff20ead5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,15 @@ # NHS digital service manual Changelog +## 2.0.0 - Unreleased + +:new: **New features** + +- Add search functionality to the service manual + ## 1.13.4 - 09 December 2019 +:wrench: **Fixes** + - Add missing Details component JavaScript polyfill - Use https on all external links and fix broken link on the test your questions page - Remove the unnecessary type attribute from JavaScript resources @@ -9,6 +17,8 @@ ## 1.13.3 - 25 November 2019 +:wrench: **Fixes** + - Made it clear in PDF guidance that PDFs can be used for a permanent record - Added an additional bullet point on PDFs being used as a permanent record. - Refactor CSS and HTML to clean up the code base and make the spacing more consistent diff --git a/package-lock.json b/package-lock.json index aefdd267e..3a8f2467f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "nhsuk-service-manual", - "version": "1.13.4", + "version": "2.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 88fdfba3e..7203a0b96 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nhsuk-service-manual", - "version": "1.13.4", + "version": "2.0.0", "description": "NHS digital service manual", "main": "app.js", "directories": { From a33686f595f3ba4157b6cd26d629f2ed627c6d60 Mon Sep 17 00:00:00 2001 From: AdamChrimes Date: Tue, 10 Dec 2019 15:18:47 +0000 Subject: [PATCH 42/49] update package dependencies to latest versions --- CHANGELOG.md | 4 +++ package-lock.json | 86 ++++++++++++++++++++++++++++++++++++----------- package.json | 2 +- 3 files changed, 72 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ff20ead5..0725f483d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ - Add search functionality to the service manual +:wrench: **Fixes** + +- Update package dependencies to latest versions + ## 1.13.4 - 09 December 2019 :wrench: **Fixes** diff --git a/package-lock.json b/package-lock.json index 3a8f2467f..150e8da82 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6114,9 +6114,9 @@ } }, "eslint": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.6.0.tgz", - "integrity": "sha512-PpEBq7b6qY/qrOmpYQ/jTMDYfuQMELR4g4WI1M/NaSDDD/bdcMb+dj4Hgks7p41kW2caXsPsEZAEAyAgjVVC0g==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.7.2.tgz", + "integrity": "sha512-qMlSWJaCSxDFr8fBPvJM9kJwbazrhNcBU3+DszDW1OlEwKBBRWsJc7NJFelvwQpanHCR14cOLD41x8Eqvo3Nng==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -6134,7 +6134,7 @@ "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", - "globals": "^11.7.0", + "globals": "^12.1.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -6147,7 +6147,7 @@ "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", + "optionator": "^0.8.3", "progress": "^2.0.0", "regexpp": "^2.0.1", "semver": "^6.1.2", @@ -6159,18 +6159,18 @@ }, "dependencies": { "ansi-escapes": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz", - "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", + "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", "dev": true, "requires": { - "type-fest": "^0.5.2" + "type-fest": "^0.8.1" } }, "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "cli-cursor": { @@ -6251,6 +6251,15 @@ } } }, + "globals": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", + "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, "inquirer": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", @@ -6313,6 +6322,20 @@ "mimic-fn": "^2.1.0" } }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -6330,14 +6353,25 @@ "dev": true }, "string-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", - "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^5.2.0" + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, "strip-ansi": { @@ -6347,6 +6381,14 @@ "dev": true, "requires": { "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } } }, "strip-json-comments": { @@ -15391,9 +15433,9 @@ } }, "type-fest": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", - "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true }, "type-is": { @@ -16123,6 +16165,12 @@ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", diff --git a/package.json b/package.json index 7203a0b96..e89f66fb7 100755 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "babel-loader": "^8.0.6", "concurrently": "^4.1.2", "cpx": "^1.5.0", - "eslint": "^6.6.0", + "eslint": "^6.7.2", "eslint-config-airbnb-base": "^13.2.0", "eslint-config-nhsuk": "^0.17.0", "eslint-plugin-import": "^2.19.1", From e0ba9b4417fecbfe42ea384c9b5c29b3a3be75c1 Mon Sep 17 00:00:00 2001 From: AdamChrimes Date: Tue, 10 Dec 2019 15:51:51 +0000 Subject: [PATCH 43/49] remove the nofollow meta data from the service standard pages --- app/views/includes/layout.njk | 1 - ...-understand-users-and-their-needs-context-health-and-care.njk | 1 - ...oks-like-and-be-open-about-how-your-service-is-performing.njk | 1 - .../11-choose-the-right-tools-and-technology.njk | 1 - app/views/service-standard/12-make-new-source-code-open.njk | 1 - ...ntribute-to-open-standards-common-components-and-patterns.njk | 1 - app/views/service-standard/14-operate-a-reliable-service.njk | 1 - app/views/service-standard/15-support-a-culture-of-care.njk | 1 - .../service-standard/16-make-your-service-clinically-safe.njk | 1 - .../service-standard/17-make-your-service-interoperable.njk | 1 - ...olving-a-whole-problem-and-provide-a-joined-up-experience.njk | 1 - app/views/service-standard/4-make-the-service-simple-to-use.njk | 1 - .../5-make-sure-everyone-can-use-the-service.njk | 1 - ...m-that-includes-multidisciplinary-skills-and-perspectives.njk | 1 - app/views/service-standard/7-use-agile-ways-of-working.njk | 1 - app/views/service-standard/8-iterate-and-improve-frequently.njk | 1 - .../9-respect-and-protect-users-confidentiality-and-privacy.njk | 1 - app/views/service-standard/about.njk | 1 - app/views/service-standard/index.njk | 1 - 19 files changed, 19 deletions(-) diff --git a/app/views/includes/layout.njk b/app/views/includes/layout.njk index 9eca12a73..a74f07044 100755 --- a/app/views/includes/layout.njk +++ b/app/views/includes/layout.njk @@ -42,7 +42,6 @@ - {%- if noFollow %}{% endif %} {%- block extraMeta %}{% endblock %} {% if pageTitle %}{{ pageTitle }} - NHS digital service manual{% else %}NHS digital service manual{% endif %} diff --git a/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk b/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk index ac5a33ded..013624e53 100644 --- a/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk +++ b/app/views/service-standard/1-understand-users-and-their-needs-context-health-and-care.njk @@ -1,7 +1,6 @@ {% set pageTitle = '1. Understand users and their needs in the context of health and care' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Take time to understand your users\' clinical, practical and emotional needs - and their abilities - and the problem you\'re trying to solve for them.' %} -{% set noFollow = true %} {% set beta = 'true' %} {% extends 'includes/app-layout.njk' %} diff --git a/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk b/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk index 56523defb..a80eb701a 100644 --- a/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk +++ b/app/views/service-standard/10-define-what-success-looks-like-and-be-open-about-how-your-service-is-performing.njk @@ -1,7 +1,6 @@ {% set pageTitle = '10. Define what success looks like and be open about how your service is performing' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Work out how your service helps improve health and well being, people\'s experience of health and care, and the efficiency of the health service and how you will know that you\'re succeeding.' %} -{% set noFollow = true %} {% set beta = 'true' %} {% extends 'includes/app-layout.njk' %} diff --git a/app/views/service-standard/11-choose-the-right-tools-and-technology.njk b/app/views/service-standard/11-choose-the-right-tools-and-technology.njk index f0d958c92..ae05fcb2b 100644 --- a/app/views/service-standard/11-choose-the-right-tools-and-technology.njk +++ b/app/views/service-standard/11-choose-the-right-tools-and-technology.njk @@ -1,7 +1,6 @@ {% set pageTitle = '11. Choose the right tools and technology' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Choose tools and technology that let you build a good service in an efficient, cost effective way.' %} -{% set noFollow = true %} {% set beta = 'true' %} {% extends 'includes/app-layout.njk' %} diff --git a/app/views/service-standard/12-make-new-source-code-open.njk b/app/views/service-standard/12-make-new-source-code-open.njk index e0ec02950..205997a31 100644 --- a/app/views/service-standard/12-make-new-source-code-open.njk +++ b/app/views/service-standard/12-make-new-source-code-open.njk @@ -1,7 +1,6 @@ {% set pageTitle = '12. Make new source code open' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Make all new source code open and reusable, and publish it under appropriate licences.' %} -{% set noFollow = true %} {% set beta = 'true' %} {% extends 'includes/app-layout.njk' %} diff --git a/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk b/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk index 50acb3354..7e829474c 100644 --- a/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk +++ b/app/views/service-standard/13-use-and-contribute-to-open-standards-common-components-and-patterns.njk @@ -1,7 +1,6 @@ {% set pageTitle = '13. Use and contribute to open standards, common components and patterns' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Use tried and tested components and patterns from the NHS digital service manual or, failing that, the GOV.UK Design System.' %} -{% set noFollow = true %} {% set beta = 'true' %} {% set hideDescription = 'true' %} diff --git a/app/views/service-standard/14-operate-a-reliable-service.njk b/app/views/service-standard/14-operate-a-reliable-service.njk index 77356572a..f62467f23 100644 --- a/app/views/service-standard/14-operate-a-reliable-service.njk +++ b/app/views/service-standard/14-operate-a-reliable-service.njk @@ -1,7 +1,6 @@ {% set pageTitle = '14. Operate a reliable service' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'People need the NHS 24 hours a day, every day of the year. Minimise service downtime and have a plan to deal with it when it does happen.' %} -{% set noFollow = true %} {% set beta = 'true' %} {% extends 'includes/app-layout.njk' %} diff --git a/app/views/service-standard/15-support-a-culture-of-care.njk b/app/views/service-standard/15-support-a-culture-of-care.njk index 5f9b53d86..a5a714647 100644 --- a/app/views/service-standard/15-support-a-culture-of-care.njk +++ b/app/views/service-standard/15-support-a-culture-of-care.njk @@ -1,7 +1,6 @@ {% set pageTitle = '15. Support a culture of care' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Caring is the core business of the NHS. NHS services should provide a positive experience of care or help NHS staff provide a caring service.' %} -{% set noFollow = true %} {% set beta = 'true' %} {% extends 'includes/app-layout.njk' %} diff --git a/app/views/service-standard/16-make-your-service-clinically-safe.njk b/app/views/service-standard/16-make-your-service-clinically-safe.njk index 7ab44b4af..861fae16e 100644 --- a/app/views/service-standard/16-make-your-service-clinically-safe.njk +++ b/app/views/service-standard/16-make-your-service-clinically-safe.njk @@ -1,7 +1,6 @@ {% set pageTitle = '16. Make your service clinically safe' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Digital information, tools and services have the potential to cause patient harm.' %} -{% set noFollow = true %} {% set beta = 'true' %} {% extends 'includes/app-layout.njk' %} diff --git a/app/views/service-standard/17-make-your-service-interoperable.njk b/app/views/service-standard/17-make-your-service-interoperable.njk index 2f386bc4a..ada9e3f5c 100644 --- a/app/views/service-standard/17-make-your-service-interoperable.njk +++ b/app/views/service-standard/17-make-your-service-interoperable.njk @@ -1,7 +1,6 @@ {% set pageTitle = '17. Make your service interoperable' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'In an organisation as diverse and complex as the NHS, we need systems and services which talk to each other. Build for interoperability to share patient records and get data quickly from one place to another.' %} -{% set noFollow = true %} {% set beta = 'true' %} {% extends 'includes/app-layout.njk' %} diff --git a/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk b/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk index de5653e99..01d6d38d4 100644 --- a/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk +++ b/app/views/service-standard/2-and-3-work-towards-solving-a-whole-problem-and-provide-a-joined-up-experience.njk @@ -2,7 +2,6 @@ {% set pageTitle = '2. and 3. Work towards solving a whole problem and provide a joined up experience' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Consider where your service fits in your users\' healthcare journey and whether you can solve a whole problem or influence a wider solution.' %} -{% set noFollow = true %} {% set beta = 'true' %} {% extends 'includes/app-layout.njk' %} diff --git a/app/views/service-standard/4-make-the-service-simple-to-use.njk b/app/views/service-standard/4-make-the-service-simple-to-use.njk index 67429b9fa..15fa33d35 100644 --- a/app/views/service-standard/4-make-the-service-simple-to-use.njk +++ b/app/views/service-standard/4-make-the-service-simple-to-use.njk @@ -1,7 +1,6 @@ {% set pageTitle = '4. Make the service simple to use' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Build a service that\'s simple to use so that people can succeed first time. Test with users to make sure it works for them.' %} -{% set noFollow = true %} {% set beta = 'true' %} {% extends 'includes/app-layout.njk' %} diff --git a/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk b/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk index afe83e7a1..270abec07 100644 --- a/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk +++ b/app/views/service-standard/5-make-sure-everyone-can-use-the-service.njk @@ -1,7 +1,6 @@ {% set pageTitle = '5. Make sure everyone can use the service' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Make sure people with different physical, mental health, social, cultural or learning needs can use your service, whether it\'s for the public or staff.' %} -{% set noFollow = true %} {% set beta = 'true' %} {% extends 'includes/app-layout.njk' %} diff --git a/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk b/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk index f80a9d460..1ac08f842 100644 --- a/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk +++ b/app/views/service-standard/6-create-a-team-that-includes-multidisciplinary-skills-and-perspectives.njk @@ -1,7 +1,6 @@ {% set pageTitle = '6. Create a team that includes multidisciplinary skills and perspectives' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Make sure you have the right - and diverse - skills and roles to build and operate the service.' %} -{% set noFollow = true %} {% set beta = 'true' %} {% extends 'includes/app-layout.njk' %} diff --git a/app/views/service-standard/7-use-agile-ways-of-working.njk b/app/views/service-standard/7-use-agile-ways-of-working.njk index 37fa0eff8..c59704ca1 100644 --- a/app/views/service-standard/7-use-agile-ways-of-working.njk +++ b/app/views/service-standard/7-use-agile-ways-of-working.njk @@ -1,7 +1,6 @@ {% set pageTitle = '7. Use agile ways of working' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Make sure that the team can deliver quickly and adapt to meet users\' needs.' %} -{% set noFollow = true %} {% set beta = 'true' %} {% extends 'includes/app-layout.njk' %} diff --git a/app/views/service-standard/8-iterate-and-improve-frequently.njk b/app/views/service-standard/8-iterate-and-improve-frequently.njk index 9e656c44d..ba917275a 100644 --- a/app/views/service-standard/8-iterate-and-improve-frequently.njk +++ b/app/views/service-standard/8-iterate-and-improve-frequently.njk @@ -1,7 +1,6 @@ {% set pageTitle = '8. Iterate and improve frequently'%} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Make sure you have the capacity, resources and technical flexibility to iterate and improve the service frequently.' %} -{% set noFollow = true %} {% set beta = 'true' %} {% extends 'includes/app-layout.njk' %} diff --git a/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk b/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk index 433eca0c3..d1cb3a23e 100644 --- a/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk +++ b/app/views/service-standard/9-respect-and-protect-users-confidentiality-and-privacy.njk @@ -1,7 +1,6 @@ {% set pageTitle = '9. Respect and protect users’ confidentiality and privacy' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'Evaluate what data and information your service will be collecting, storing and providing.' %} -{% set noFollow = true %} {% set beta = 'true' %} {% extends 'includes/app-layout.njk' %} diff --git a/app/views/service-standard/about.njk b/app/views/service-standard/about.njk index 78a026beb..0c8175cb8 100644 --- a/app/views/service-standard/about.njk +++ b/app/views/service-standard/about.njk @@ -2,7 +2,6 @@ {% set pageTitle = 'About the NHS service standard' %} {% set pageSection = 'NHS service standard' %} {% set pageDescription = 'The NHS service standard is designed to help teams meet the GOV.UK service standard in the context of health and care.' %} -{% set noFollow = true %} {% set beta = 'true' %} {% set hideDescription = 'true' %} diff --git a/app/views/service-standard/index.njk b/app/views/service-standard/index.njk index ecc93b099..f6439d270 100644 --- a/app/views/service-standard/index.njk +++ b/app/views/service-standard/index.njk @@ -1,6 +1,5 @@ {% set pageTitle = 'NHS service standard' %} {% set pageDescription = 'This NHS companion to the GOV.UK service standard will help you check that your service is good enough for the NHS.' %} -{% set noFollow = true %} {% set beta = 'true' %} {% extends 'includes/app-layout.njk' %} From be313841c95c8e27e0dc41065f25afa07570d9c9 Mon Sep 17 00:00:00 2001 From: AdamChrimes Date: Tue, 10 Dec 2019 15:52:37 +0000 Subject: [PATCH 44/49] add the service standard pages to the sitemap --- app/views/sitemap.njk | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/app/views/sitemap.njk b/app/views/sitemap.njk index 2e41942b8..561b8c2ee 100644 --- a/app/views/sitemap.njk +++ b/app/views/sitemap.njk @@ -25,6 +25,28 @@
  • Frontend library
  • Prototyping tools
  • +
  • + NHS service standard + +
  • UI styles, components and patterns