Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
86cdadf
Add payment problem notification banner
benjystanton Oct 19, 2026
2bc22ce
Create bsa-claim-interruption.html
benjystanton Oct 19, 2026
d180d03
Bones of payments issue dashboard
benjystanton Oct 19, 2026
66ed9f0
Create basic payment issue pages
benjystanton Oct 19, 2026
72a3080
Adding tags and content
benjystanton Oct 20, 2026
d580e69
Iterate following design crit
benjystanton Oct 21, 2026
ef2a33b
Add more issue types
benjystanton Oct 22, 2026
3e9156c
Updating content following crit
benjystanton Oct 22, 2026
1d7f4a0
Merge branch 'main' into bsa-payments
benjystanton Oct 22, 2026
c70975c
Add childhood flu
benjystanton Oct 22, 2026
5729ff9
Add a part re-submitted group
benjystanton Oct 23, 2026
c441c9a
Add example names
benjystanton Oct 23, 2026
b79010c
Add some fake records
benjystanton Oct 23, 2026
e8e0ec5
Link to fake records
benjystanton Oct 23, 2026
63ce1f9
Add totals
benjystanton Oct 23, 2026
a37bd01
Improve content
benjystanton Oct 23, 2026
9460416
Rejected for another reason
benjystanton Oct 23, 2026
a0eda5f
Create manage-your-service.html
benjystanton Oct 23, 2026
de12580
Link to MYS page
benjystanton Oct 23, 2026
2552078
Update content
benjystanton Oct 23, 2026
926c62b
Merge branch 'main' into bsa-payments
benjystanton Oct 23, 2026
01408ec
Merge branch 'main' into bsa-payments
benjystanton Oct 23, 2026
1f24905
Delete old files
benjystanton Oct 26, 2026
95658aa
Update link
benjystanton Oct 26, 2026
10de8b2
Update template name
benjystanton Oct 26, 2026
08b8a26
Create resubmit template
benjystanton Oct 26, 2026
c322cbb
Create claim template
benjystanton Oct 26, 2026
2e8ba6a
Create covid claim template
benjystanton Oct 26, 2026
79d969c
Create 11 new records
benjystanton Oct 26, 2026
ce7e020
Show correct patient tables
benjystanton Oct 26, 2026
c5f2385
Tidying things up
benjystanton Oct 26, 2026
e4c79f9
Final changes
benjystanton Oct 26, 2026
9b128f3
Fix typo
benjystanton Oct 26, 2026
355e6da
Add a new user preset
benjystanton Oct 26, 2026
8d08c73
Typo
benjystanton Oct 26, 2026
a009024
Merge branch 'main' into bsa-payments
benjystanton Oct 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions app/data/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,20 @@ module.exports = [
"firstName": "Jeremy",
"lastName": "Blue"
},
{
"id": "7863542190631",
"email": "[email protected]",
"organisations": [
{
"id": "FA424",
"permissionLevel": "Lead administrator",
"status": "Active",
"vaccinator": true
}
],
"firstName": "Tara",
"lastName": "Mills"
},
{
"id": "64746353",
"email": "[email protected]",
Expand Down
25 changes: 25 additions & 0 deletions app/routes/prototype-admin.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,14 @@ const SIGN_IN_USERS = [
role: 'Lead administrator',
orgDescription: 'Pickfords Pharmacy (FA424)'
},
{
id: '7863542190631',
name: 'Tara Mills',
email: '[email protected]',
orgId: 'FA424',
role: 'Lead administrator',
orgDescription: 'Pickfords Pharmacy (FA424)'
},
{
id: '1394978032564',
name: 'Ocean Merritt',
Expand Down Expand Up @@ -572,6 +580,23 @@ module.exports = (router) => {
res.redirect(getDefaultLandingPath(data, data.currentOrganisationId))
})

// ----------------------------------------------------------------
// Preset: Pharmacy Lead Admin with Payments and appointments (Tara Mills, FA424)
// ----------------------------------------------------------------

router.get('/prototype-setup/preset/pharmacy-lead-admin-payments', (req, res) => {
resetSession(req)
const data = req.session.data
data.currentUserId = '7863542190631'
data.currentOrganisationId = 'FA424'
data.showPaymentsLink = true
setAppointmentsInterfaceForUserOrganisations(data, data.currentUserId, true)
setupBatchesForOrg(data, 'FA424')
addRandomUsers(data, 'FA424', 10)
addRandomVaccinations(data, 'FA424', 30)
res.redirect(getDefaultLandingPath(data, data.currentOrganisationId))
})

// ----------------------------------------------------------------
// Preset: Pharmacy Group Admin, small chain (Paulina Sloan, P0191N)
// ----------------------------------------------------------------
Expand Down
10 changes: 9 additions & 1 deletion app/views/includes/_preset-scenarios-table.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,15 @@
userName: "Jeremy Blue",
userEmail: "[email protected]",
role: "Lead administrator",
scenarioDetails: "Lead admin at a pharmacy.Includes generated users and vaccination records."
scenarioDetails: "Lead admin at a pharmacy. Includes generated users and vaccination records."
},
{
presetLabel: "Lead admin, single pharmacy (payments and appointments)",
presetPath: "/prototype-setup/preset/pharmacy-lead-admin-payments",
userName: "Tara Mills",
userEmail: "[email protected]",
role: "Lead administrator",
scenarioDetails: "Pharmacy scenario with payments and appointments enabled."
},
{
presetLabel: "Recorder, single pharmacy",
Expand Down
9 changes: 9 additions & 0 deletions app/views/includes/header.html
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,15 @@
active: (currentSection == "home")
}), navigationItems) %}

<!-- Payments -->
{% if canShowPayments or data.showPaymentsLink %}
{% set navigationItems = (navigationItems.push({
href: "/payments/",
text: "Payments",
active: (currentSection == "payments")
}), navigationItems) %}
{% endif %}

<!-- Pharmacy HQ-specific navigation -->
{% if currentOrganisation.type === "Pharmacy HQ" %}
{% set navigationItems = (navigationItems.push({
Expand Down
32 changes: 32 additions & 0 deletions app/views/payments/claims/_claim-template.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<div class="nhsuk-grid-row">
<div class="nhsuk-grid-column-two-thirds">

<h1 class="nhsuk-heading-l">{{ pageName }}</h1>

{# Hide help content if the issue has been resubmitted #}
{% if data.status == "rejected" %}
{{ helpContent | safe }}
{% endif %}

{# Hide buttons if issue can not be actioned #}
{% if mysService and data.status == "rejected" %}
<div class="nhsuk-button-group">
{{ button({
text: "Register on MYS (opens in new tab)",
href: "/payments/manage-your-service",
attributes: {
rel: "noreferrer noopener",
target: "_blank"
}
}) }}
{{ button({
text: "Resubmit",
href: resubmitPage,
variant: "secondary"
}) }}
</div>
{% else %}
{% endif %}

</div>
</div>
25 changes: 25 additions & 0 deletions app/views/payments/claims/adult-flu.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{% extends 'layout.html' %}
{% set canShowPayments = true %}
{% set currentSection = "payments" %}

{# Update these for each page #}
{% set mysService = "adult flu vaccinations" %}
{% set pageName = "Not registered for " + mysService %}
{% set resubmitPage = "/payments/resubmit/adult-flu" %}
{% set helpContent %}
<h2 class="nhsuk-heading-m nhsuk-u-margin-top-9">How to fix this</h2>
<p>According to NHSBSA, this pharmacy is not registered for the {{ mysService }} service on the MYS portal.</p>
<p>You need to register on MYS as soon as possible and then return to the payments dashboard to resubmit your claims.</p>
{% endset %}

{% block beforeContent %}
{{ backLink({
href: "javascript:window.history.back()",
text: "Back"
}) }}
{% endblock %}

{% block content %}
{% include "payments/claims/_claim-template.html" %}
{% include "payments/tables/_rejected-claims-table-adult-flu.html" %}
{% endblock %}
25 changes: 25 additions & 0 deletions app/views/payments/claims/childhood-flu.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{% extends 'layout.html' %}
{% set canShowPayments = true %}
{% set currentSection = "payments" %}

{# Update these for each page #}
{% set mysService = "childhood flu vaccinations" %}
{% set pageName = "Not registered for " + mysService %}
{% set resubmitPage = "/payments/resubmit/childhood-flu" %}
{% set helpContent %}
<h2 class="nhsuk-heading-m nhsuk-u-margin-top-9">How to fix this</h2>
<p>According to NHSBSA, this pharmacy is not registered for the {{ mysService }} service on the MYS portal.</p>
<p>You need to register on MYS as soon as possible and then return to the payments dashboard to resubmit your claims.</p>
{% endset %}

{% block beforeContent %}
{{ backLink({
href: "javascript:window.history.back()",
text: "Back"
}) }}
{% endblock %}

{% block content %}
{% include "payments/claims/_claim-template.html" %}
{% include "payments/tables/_rejected-claims-table-childhood-flu.html" %}
{% endblock %}
25 changes: 25 additions & 0 deletions app/views/payments/claims/covid-19.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{% extends 'layout.html' %}
{% set canShowPayments = true %}
{% set currentSection = "payments" %}

{# Update these for each page #}
{% set mysService = "COVID-19 vaccinations" %}
{% set pageName = "Not registered for " + mysService %}
{% set resubmitPage = "/payments/resubmit/covid-19" %}
{% set helpContent %}
<h2 class="nhsuk-heading-m nhsuk-u-margin-top-9">How to fix this</h2>
<p>According to NHSBSA, this pharmacy is not registered for the {{ mysService }} service on the MYS portal.</p>
<p>You need to register on MYS as soon as possible and then return to the payments dashboard to resubmit your claims.</p>
{% endset %}

{% block beforeContent %}
{{ backLink({
href: "javascript:window.history.back()",
text: "Back"
}) }}
{% endblock %}

{% block content %}
{% include "payments/claims/_claim-template.html" %}
{% include "payments/tables/_rejected-claims-table-covid-19.html" %}
{% endblock %}
25 changes: 25 additions & 0 deletions app/views/payments/claims/invalid-postcode.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{% extends 'layout.html' %}
{% set canShowPayments = true %}
{% set currentSection = "payments" %}

{# Update these for each page #}
{# {% set mysService = "N/A" %} #}
{% set pageName = "Invalid patient postcode" %}
{# {% set resubmitPage = "N/A" %} #}
{% set helpContent %}
<h2 class="nhsuk-heading-m nhsuk-u-margin-top-9">What this means</h2>
<p>According to NHSBSA, the patient's postcode is invalid. They therefore cannot accept the claim.</p>
<p>For more information, <a href="/payments/manage-your-service" rel="noreferrer noopener" target="_blank">contact NHSBSA - MYS (opens in new tab)</a>.</p>
{% endset %}

{% block beforeContent %}
{{ backLink({
href: "javascript:window.history.back()",
text: "Back"
}) }}
{% endblock %}

{% block content %}
{% include "payments/claims/_claim-template.html" %}
{% include "payments/tables/_rejected-claims-table-postcode.html" %}
{% endblock %}
26 changes: 26 additions & 0 deletions app/views/payments/claims/out-of-season-flu.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{% extends 'layout.html' %}
{% set canShowPayments = true %}
{% set currentSection = "payments" %}

{# Update these for each page #}
{# {% set mysService = "N/A" %} #}
{% set pageName = "Flu vaccination given out of season" %}
{# {% set resubmitPage = "N/A" %} #}
{% set helpContent %}
<h2 class="nhsuk-heading-m nhsuk-u-margin-top-9">What this means</h2>
<p>NHSBSA does not accept claims for flu vaccinations given outside the dates of the seasonal vaccination programme.</p>
<p>If a mistake was made when recording the date the vaccination was given, you can delete the record and create a new record.</p>
<p>For more information, <a href="/payments/manage-your-service" rel="noreferrer noopener" target="_blank">contact NHSBSA - MYS (opens in new tab)</a>.</p>
{% endset %}

{% block beforeContent %}
{{ backLink({
href: "javascript:window.history.back()",
text: "Back"
}) }}
{% endblock %}

{% block content %}
{% include "payments/claims/_claim-template.html" %}
{% include "payments/tables/_rejected-claims-table-out-of-season-flu.html" %}
{% endblock %}
25 changes: 25 additions & 0 deletions app/views/payments/claims/patient-outside-age-range.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{% extends 'layout.html' %}
{% set canShowPayments = true %}
{% set currentSection = "payments" %}

{# Update these for each page #}
{# {% set mysService = "N/A" %} #}
{% set pageName = "Patient is not within the age range for product" %}
{# {% set resubmitPage = "N/A" %} #}
{% set helpContent %}
<h2 class="nhsuk-heading-m nhsuk-u-margin-top-9">What this means</h2>
<p>According to NHSBSA, the patient is not within the age range for the vaccine product given. They therefore cannot accept the claim.</p>
<p>For more information, <a href="/payments/manage-your-service" rel="noreferrer noopener" target="_blank">contact NHSBSA - MYS (opens in new tab)</a>.</p>
{% endset %}

{% block beforeContent %}
{{ backLink({
href: "javascript:window.history.back()",
text: "Back"
}) }}
{% endblock %}

{% block content %}
{% include "payments/claims/_claim-template.html" %}
{% include "payments/tables/_rejected-claims-table-patient-outside-age-range.html" %}
{% endblock %}
Loading
Loading