From af287fda6978ae0106c46b29b3b0b3b5755d7175 Mon Sep 17 00:00:00 2001 From: Anna-Sutton Date: Mon, 11 May 2026 12:29:01 +0100 Subject: [PATCH 01/11] Product page and CP sign up first page updates On the product page: For 1. clarified that you're signing up for an account to user the service. Updated the section on Switching from another pharmacy system --- app/views/product-page.html | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/views/product-page.html b/app/views/product-page.html index 4621e22e..e76eedad 100644 --- a/app/views/product-page.html +++ b/app/views/product-page.html @@ -68,7 +68,7 @@

Sign up

-

Sign up with your NHS email and get an account.

+

Sign up for an account to access the service.

@@ -185,7 +185,9 @@

Switching from another pharmacy system?

-

You can switch point of care systems at any time, and use different systems for different pharmacies.

+

From 1 September 2026, all pharmacies must use Record a vaccination for all NHS vaccinations, including COVID-19 and flu.

+ +

You can sign up for an account to use the service any time before the start of autumn vaccinations.

You will still have access to your previous system for at least 6 months so you can download reports.

@@ -231,9 +233,9 @@

Trusts and GPs

This includes teams vaccinating in occupational health, maternity, in-patient and outreach settings.

-

Your regions are responsible for inviting you to use the service.

+

Your regions are responsible for inviting you to use Record a vaccination.

-

If you want to use RAVS, contact your Regional Vaccination Operations Centre (RVOC).

+

If you want to use the service, contact your Regional Vaccination Operations Centre (RVOC).

From 18aa47e08467383f788ddb585fc2efa7843392db Mon Sep 17 00:00:00 2001 From: Anna-Sutton Date: Mon, 11 May 2026 12:40:03 +0100 Subject: [PATCH 02/11] Update start.html Made the page pharmacy specific - so removed info aimed at other NHS settings. Added a line about bulk onboarding. --- app/views/apply/start.html | 28 ++++------------------------ 1 file changed, 4 insertions(+), 24 deletions(-) diff --git a/app/views/apply/start.html b/app/views/apply/start.html index c6e54e66..f026fb0c 100644 --- a/app/views/apply/start.html +++ b/app/views/apply/start.html @@ -1,6 +1,6 @@ {% extends 'layout.html' %} -{% set pageName = "Sign up" %} +{% set pageName = "Sign up for your pharmacy" %} {% block beforeContent %} {{ backLink({ @@ -19,29 +19,9 @@

{{ pageName }}

Any community pharmacy offering NHS vaccinations can sign up.

-

For other NHS settings, your regions are responsible for inviting you to use the service.

- - {{ radios({ - name: "oneOrMany", - value: data.oneOrMany, - fieldset: { - legend: { - text: "How many pharmacies do you want to sign up?", - size: "m", - isPageHeading: true - } - }, - items: [ - { - value: "single", - text: "A single pharmacy" - }, - { - value: "chain", - text: "A group of pharmacies" - } - ] - }) }} +

If you need to sign up for more than 1 pharmacy, you can use this form multiple times.

+ +

For chains with 50 or more branches, there is a separate bulk onboarding option. Contact us for more details.

{{ button({ "text": "Continue" From d90b886edeef833c39c365ae34307f9463b107a2 Mon Sep 17 00:00:00 2001 From: Anna-Sutton Date: Mon, 11 May 2026 12:43:15 +0100 Subject: [PATCH 03/11] Update product-page.html Fixed link. --- app/views/product-page.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/product-page.html b/app/views/product-page.html index e76eedad..81f01829 100644 --- a/app/views/product-page.html +++ b/app/views/product-page.html @@ -235,7 +235,7 @@

Trusts and GPs

Your regions are responsible for inviting you to use Record a vaccination.

-

If you want to use the service, contact your Regional Vaccination Operations Centre (RVOC).

+

If you want to use the service, contact your Regional Vaccination Operations Centre (RVOC).

From 20f407e30463531c25639c834f5ff708277b0923 Mon Sep 17 00:00:00 2001 From: Anna-Sutton Date: Mon, 11 May 2026 12:47:42 +0100 Subject: [PATCH 04/11] Update start.html --- app/views/apply/start.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/apply/start.html b/app/views/apply/start.html index f026fb0c..5f7c3a80 100644 --- a/app/views/apply/start.html +++ b/app/views/apply/start.html @@ -21,7 +21,7 @@

{{ pageName }}

If you need to sign up for more than 1 pharmacy, you can use this form multiple times.

-

For chains with 50 or more branches, there is a separate bulk onboarding option. Contact us for more details.

+

For chains with 50 or more branches, there is a separate bulk onboarding option. Contact us for more details.

{{ button({ "text": "Continue" From 6eb64ede37622aef51baa3a146625be9c9ab50ef Mon Sep 17 00:00:00 2001 From: Anna-Sutton Date: Mon, 11 May 2026 14:20:42 +0100 Subject: [PATCH 05/11] Update product-page.html --- app/views/product-page.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/product-page.html b/app/views/product-page.html index 81f01829..ea2b0aa0 100644 --- a/app/views/product-page.html +++ b/app/views/product-page.html @@ -185,7 +185,7 @@

Switching from another pharmacy system?

-

From 1 September 2026, all pharmacies must use Record a vaccination for all NHS vaccinations, including COVID-19 and flu.

+

From 1 September 2026, community pharmacies must use Record a vaccination for all NHS vaccinations, including COVID-19 and flu.

You can sign up for an account to use the service any time before the start of autumn vaccinations.

From f527139a2aeaceb23cec9613c82b2026e3382872 Mon Sep 17 00:00:00 2001 From: Anna-Sutton Date: Mon, 11 May 2026 14:25:47 +0100 Subject: [PATCH 06/11] Update product-page.html --- app/views/product-page.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/product-page.html b/app/views/product-page.html index ea2b0aa0..c3ba445d 100644 --- a/app/views/product-page.html +++ b/app/views/product-page.html @@ -191,7 +191,7 @@

Switching from another pharm

You will still have access to your previous system for at least 6 months so you can download reports.

-

Other questions? Get in touch.

+

Any questions? Get in touch.

From d0cf0d77f326d702c5a95fe4bc62c813b530de1a Mon Sep 17 00:00:00 2001 From: Anna-Sutton Date: Mon, 11 May 2026 15:31:24 +0100 Subject: [PATCH 07/11] Update product-page.html Deleted ? from Switching from another pharmacy system heading. --- app/views/product-page.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/product-page.html b/app/views/product-page.html index c3ba445d..6368c5ae 100644 --- a/app/views/product-page.html +++ b/app/views/product-page.html @@ -183,7 +183,7 @@

-

Switching from another pharmacy system?

+

Switching from another pharmacy system

From 1 September 2026, community pharmacies must use Record a vaccination for all NHS vaccinations, including COVID-19 and flu.

From 2c043c8da5fd2ef974d8676be4a102eece4b1a72 Mon Sep 17 00:00:00 2001 From: Anna-Sutton Date: Mon, 11 May 2026 15:34:02 +0100 Subject: [PATCH 08/11] Update start.html Changed first line to state that CPs must use RAVS from the autumn. --- app/views/apply/start.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/apply/start.html b/app/views/apply/start.html index 5f7c3a80..99a3c3da 100644 --- a/app/views/apply/start.html +++ b/app/views/apply/start.html @@ -17,7 +17,7 @@

{{ pageName }}

-

Any community pharmacy offering NHS vaccinations can sign up.

+

From 1 September 2026, community pharmacies offering NHS vaccinations must use this service.

If you need to sign up for more than 1 pharmacy, you can use this form multiple times.

From 632292a02f7b7ae19b0834f5f76cfbd70067b038 Mon Sep 17 00:00:00 2001 From: Anna-Sutton Date: Mon, 11 May 2026 15:57:42 +0100 Subject: [PATCH 09/11] Attempted to recreate old Start page --- app/views/apply/start.html | 58 ++++++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 9 deletions(-) diff --git a/app/views/apply/start.html b/app/views/apply/start.html index 99a3c3da..917a9e8f 100644 --- a/app/views/apply/start.html +++ b/app/views/apply/start.html @@ -12,9 +12,13 @@ {% block content %}
- -
- + {% if (errors | length) > 0 %} +      {{ errorSummary({ +        titleText: "There is a problem", +        errorList: errors +      }) }} +     {% endif %} +

{{ pageName }}

From 1 September 2026, community pharmacies offering NHS vaccinations must use this service.

@@ -23,11 +27,47 @@

{{ pageName }}

For chains with 50 or more branches, there is a separate bulk onboarding option. Contact us for more details.

- {{ button({ - "text": "Continue" - }) }} -
+
+ + {% set options = [] %} +       {% set items = [{ text: "", value: ""}] %} + +       {% for organisation in data.organisations %} +         {% if organisation.type == "Community Pharmacy" %} +          {% set items = (items.push({ +            text: organisation.name + ", " + organisation.address.line1 + ", " + (organisation.address.postcode | upper) + " (" + organisation.id + ")", +            value: organisation.id, +            selected: (organisation.id === data.organisationCode) +          }), items) %} +         {% endif %} +       {% endfor %} + +       {{ select({ +         id: "organisation-code", +         name: "organisationCode", +         label: { +          text: "Find your pharmacy", +          classes: "nhsuk-label--m nhsuk-u-margin-bottom-1" +        }, +        hint: { +         text: "Search by name or ODS code" +        }, +        items: items, +        errorMessage: { +         text: (errors | first).text +        } if (errors | length), +        attributes: { +         "data-module": "autocomplete" +        } +      }) }} + +        {{ button({ +          "text": "Continue" +        }) }} +      
+ + -
-
+    
+  
{% endblock %} From 4d8190145ccfde3be8a2dd68911f6698fe6fb940 Mon Sep 17 00:00:00 2001 From: Caitlin Roach Date: Mon, 11 May 2026 16:33:44 +0100 Subject: [PATCH 10/11] Fix to button alignment removed some non-breaking-white space bits that were causing alignment issues --- app/views/apply/start.html | 90 +++++++++++++++++++------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/app/views/apply/start.html b/app/views/apply/start.html index 917a9e8f..5d7208d9 100644 --- a/app/views/apply/start.html +++ b/app/views/apply/start.html @@ -12,62 +12,62 @@ {% block content %}
- {% if (errors | length) > 0 %} -      {{ errorSummary({ -        titleText: "There is a problem", -        errorList: errors -      }) }} -     {% endif %} + {% if (errors | length) > 0 %} + {{ errorSummary({ + titleText: "There is a problem", + errorList: errors + }) }} + {% endif %} -

{{ pageName }}

+

{{ pageName }}

-

From 1 September 2026, community pharmacies offering NHS vaccinations must use this service.

+

From 1 September 2026, community pharmacies offering NHS vaccinations must use this service.

-

If you need to sign up for more than 1 pharmacy, you can use this form multiple times.

+

If you need to sign up for more than 1 pharmacy, you can use this form multiple times.

-

For chains with 50 or more branches, there is a separate bulk onboarding option. Contact us for more details.

+

For chains with 50 or more branches, there is a separate bulk onboarding option. Contact us for more details.

-
+ {% set options = [] %} -       {% set items = [{ text: "", value: ""}] %} + {% set items = [{ text: "", value: ""}] %} -       {% for organisation in data.organisations %} -         {% if organisation.type == "Community Pharmacy" %} -          {% set items = (items.push({ -            text: organisation.name + ", " + organisation.address.line1 + ", " + (organisation.address.postcode | upper) + " (" + organisation.id + ")", -            value: organisation.id, -            selected: (organisation.id === data.organisationCode) -          }), items) %} -         {% endif %} -       {% endfor %} + {% for organisation in data.organisations %} + {% if organisation.type == "Community Pharmacy" %} + {% set items = (items.push({ + text: organisation.name + ", " + organisation.address.line1 + ", " + (organisation.address.postcode | upper) + " (" + organisation.id + ")", + value: organisation.id, + selected: (organisation.id === data.organisationCode) + }), items) %} + {% endif %} + {% endfor %} -       {{ select({ -         id: "organisation-code", -         name: "organisationCode", -         label: { -          text: "Find your pharmacy", -          classes: "nhsuk-label--m nhsuk-u-margin-bottom-1" -        }, -        hint: { -         text: "Search by name or ODS code" -        }, -        items: items, -        errorMessage: { -         text: (errors | first).text -        } if (errors | length), -        attributes: { -         "data-module": "autocomplete" -        } -      }) }} + {{ select({ + id: "organisation-code", + name: "organisationCode", + label: { + text: "Find your pharmacy", + classes: "nhsuk-label--m nhsuk-u-margin-bottom-1" + }, + hint: { + text: "Search by name or ODS code" + }, + items: items, + errorMessage: { + text: (errors | first).text + } if (errors | length), + attributes: { + "data-module": "autocomplete" + } + }) }} -        {{ button({ -          "text": "Continue" -        }) }} -      
+ {{ button({ + "text": "Continue" + }) }} + -    
-  
+ + {% endblock %} From 0dff766c390ddad8c218c70ae3c7d4c8d1e10f8a Mon Sep 17 00:00:00 2001 From: Caitlin Roach Date: Tue, 12 May 2026 15:30:18 +0100 Subject: [PATCH 11/11] Fixed routing to check pharmacy and added error states --- app/routes/apply.js | 35 ++++++++++++++++++++++++++++------- app/views/apply/start.html | 2 +- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/app/routes/apply.js b/app/routes/apply.js index ed168add..4419dcb7 100644 --- a/app/routes/apply.js +++ b/app/routes/apply.js @@ -9,10 +9,29 @@ const sortByNameThenPostcode = (getPostcode = (item) => item.postcode) => (a, b) return 1 } +const findOrganisationById = (data, organisationId) => { + if (!organisationId) return null + return (data.organisations || []).find((organisation) => organisation.id === organisationId) || + (data.allOrganisations || []).find((organisation) => organisation.id === organisationId) +} + module.exports = router => { router.get('/apply/start', async (req, res) => { const data = req.session.data + let errors = [] + + if (req.query.error === 'no-pharmacy') { + errors.push({ + text: 'Select a pharmacy', + href: '#organisation-code' + }) + } else if (req.query.error === 'existing-account') { + errors.push({ + text: 'This pharmacy already has an account', + href: '#organisation-code' + }) + } const allOrganisations = data.allOrganisations.sort(sortByNameThenPostcode()) const allPharmacies = allOrganisations.filter((organisation) => organisation.type === "Community pharmacy") @@ -22,7 +41,8 @@ module.exports = router => { res.render('apply/start', { allOrganisations, allPharmacies, - allPharmacyCompanies + allPharmacyCompanies, + errors }) }) @@ -51,8 +71,9 @@ module.exports = router => { router.post('/apply/answer-pharmacy', (req, res) => { const data = req.session.data - const organisationId = data.organisationId - const organisation = data.allOrganisations.find((organisation) => organisation.id === organisationId) + const organisationId = data.organisationCode || data.organisationId + data.organisationId = organisationId + const organisation = findOrganisationById(data, organisationId) if (!organisation) { res.redirect('/apply/start?error=no-pharmacy'); @@ -94,7 +115,7 @@ module.exports = router => { router.get('/apply/check-pharmacy', (req, res) => { const data = req.session.data const organisationId = data.organisationId - const organisation = data.allOrganisations.find((organisation) => organisation.id === organisationId) + const organisation = findOrganisationById(data, organisationId) if (!organisation) { res.redirect('/apply/start'); return } res.render('apply/check-pharmacy', { @@ -145,7 +166,7 @@ module.exports = router => { router.get('/apply/check', (req, res) => { const data = req.session.data const organisationId = data.organisationId - const organisation = data.allOrganisations.find((organisation) => organisation.id === organisationId) + const organisation = findOrganisationById(data, organisationId) if (!organisation) { res.redirect('/apply/start'); return } res.render('apply/check', { @@ -177,7 +198,7 @@ module.exports = router => { router.get('/apply/check-your-email', (req, res) => { const data = req.session.data const organisationId = data.organisationId - const organisation = data.allOrganisations.find((organisation) => organisation.id === organisationId) + const organisation = findOrganisationById(data, organisationId) if (!organisation) { res.redirect('/apply/start'); return } @@ -242,7 +263,7 @@ module.exports = router => { router.get('/apply/welcome-email', (req, res) => { const data = req.session.data const organisationId = data.organisationId - const organisation = data.allOrganisations.find((organisation) => organisation.id === organisationId) + const organisation = findOrganisationById(data, organisationId) if (!organisation) { res.redirect('/apply/start'); return } res.render('apply/welcome-email', { diff --git a/app/views/apply/start.html b/app/views/apply/start.html index 5d7208d9..90dfbb20 100644 --- a/app/views/apply/start.html +++ b/app/views/apply/start.html @@ -57,7 +57,7 @@

{{ pageName }}

text: (errors | first).text } if (errors | length), attributes: { - "data-module": "autocomplete" + "data-module": "app-autocomplete" } }) }}