From f5731512951818dc8091bc3f3179ba0ed6da6113 Mon Sep 17 00:00:00 2001 From: Mat Johnson Date: Wed, 26 Aug 2026 12:54:56 +0100 Subject: [PATCH 01/15] Use nhsuk frontend table. Swap link style to button style. Temp add of 'booked' tag --- .../macros/participant-listing.html | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/views/september-iteration-2/macros/participant-listing.html b/app/views/september-iteration-2/macros/participant-listing.html index a6acdea..05604ce 100644 --- a/app/views/september-iteration-2/macros/participant-listing.html +++ b/app/views/september-iteration-2/macros/participant-listing.html @@ -1,5 +1,5 @@ {% macro participant_listing(options) %} - +
- {% for participant in options.participants %} - +
{% set totalCount = options.totalCount or options.participants.length %} {% if options.mode == "search" %} @@ -10,7 +10,7 @@
+ NHS Number @@ -30,7 +30,7 @@
{{ participant.nhs_number }}{{ participant.nhs_number }} {{ participant.full_name }} {{ participant.date_of_birth }} @@ -40,12 +40,15 @@ Ready to book + + Booked + {% endif %} {% set participantId = participant.participantId or loop.index0 %} {% if participant.status == "unstaged" %} - Add + Add {% else %} Remove {% endif %} From 1d7dedd9df4181763ebfb277c8ef67b091b08fd2 Mon Sep 17 00:00:00 2001 From: Mat Johnson Date: Wed, 26 Aug 2026 12:59:02 +0100 Subject: [PATCH 02/15] Change from green primary button to an action link to reduce visual weight --- .../includes/participant-staging-control.html | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/views/september-iteration-2/includes/participant-staging-control.html b/app/views/september-iteration-2/includes/participant-staging-control.html index d4a5199..b70884c 100644 --- a/app/views/september-iteration-2/includes/participant-staging-control.html +++ b/app/views/september-iteration-2/includes/participant-staging-control.html @@ -14,13 +14,14 @@ \ No newline at end of file From f1a2f79eb6d5f39bf3bfb21297d3aa5ee555dcd1 Mon Sep 17 00:00:00 2001 From: Mat Johnson Date: Wed, 26 Aug 2026 13:06:52 +0100 Subject: [PATCH 03/15] Try to clarify 'clear search' button a bit --- .../clickthru/04a-example-search-result.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/september-iteration-2/clickthru/04a-example-search-result.html b/app/views/september-iteration-2/clickthru/04a-example-search-result.html index ba43383..90ee65d 100644 --- a/app/views/september-iteration-2/clickthru/04a-example-search-result.html +++ b/app/views/september-iteration-2/clickthru/04a-example-search-result.html @@ -31,7 +31,7 @@

participants: participants }) }} - Clear search results + Clear search results and return to list From 4ebe5b7a36b8553d87f14371179471bcd069b09a Mon Sep 17 00:00:00 2001 From: Mat Johnson Date: Wed, 26 Aug 2026 13:07:20 +0100 Subject: [PATCH 04/15] Use 'no' instead of '0' when no results --- .../september-iteration-2/macros/participant-listing.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/views/september-iteration-2/macros/participant-listing.html b/app/views/september-iteration-2/macros/participant-listing.html index 05604ce..6bf02f4 100644 --- a/app/views/september-iteration-2/macros/participant-listing.html +++ b/app/views/september-iteration-2/macros/participant-listing.html @@ -3,7 +3,8 @@

{% set totalCount = options.totalCount or options.participants.length %} {% if options.mode == "search" %} - {{ totalCount }} participant{% if totalCount != 1 %}s{% endif %} found + + {% if totalCount === 0 %}No{% else %}{{ totalCount }}{% endif %} participant{% if totalCount != 1 %}s{% endif %} found {% else %} {{ totalCount }} participants {% endif %} From b3b43a26764aca3961b938bc9ebbac40ddc00e73 Mon Sep 17 00:00:00 2001 From: Mat Johnson Date: Wed, 26 Aug 2026 13:21:15 +0100 Subject: [PATCH 05/15] Simplify (a lot) the final confirmation page --- .../clickthru/06-booked.html | 4 +- .../includes/day-list-hard-coded.html | 441 ++++-------------- 2 files changed, 82 insertions(+), 363 deletions(-) diff --git a/app/views/september-iteration-2/clickthru/06-booked.html b/app/views/september-iteration-2/clickthru/06-booked.html index 537b99e..69ba95e 100644 --- a/app/views/september-iteration-2/clickthru/06-booked.html +++ b/app/views/september-iteration-2/clickthru/06-booked.html @@ -15,7 +15,7 @@
{% set html %}

- 48 participants booked + 10 participants booked

{% endset %} {{ notificationBanner({ @@ -23,7 +23,7 @@ type: "success" }) }}
-

+

{{ data.clinicId }} {{ data.clinicName }}

diff --git a/app/views/september-iteration-2/includes/day-list-hard-coded.html b/app/views/september-iteration-2/includes/day-list-hard-coded.html index c56161c..d83192b 100644 --- a/app/views/september-iteration-2/includes/day-list-hard-coded.html +++ b/app/views/september-iteration-2/includes/day-list-hard-coded.html @@ -1,365 +1,84 @@
-

- Morning session - 08:30 to 12:30 -

-
- - - 0 slots available of 24 - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Time - - NHS Number - - Full name - - Date of birth -
08:30999 054 3666Billie Joanne Marquardt15 March 1960
08:40999 582 7164Alice Marie Gregory8 November 1964
08:50999 374 0952Daphne Hart22 July 1958
09:00999 195 4836Marta O'Neill3 May 1971
09:10999 287 9305Susan Carter19 September 1967
09:20999 463 1129Olivia Barnes12 January 1975
09:30999 774 2201Rachel Price27 April 1962
09:40999 546 8870Hannah Wallace6 October 1959
09:50999 559 3322Fiona Lambert14 December 1973
10:00999 804 7753Georgia Mills30 June 1968
10:10999 290 4601Elaine Fox11 February 1976
10:20999 613 2084Tessa King25 August 1963
10:30999 118 9756Nadia Singh7 April 1957
10:40999 039 6617Jane Reed18 November 1970
10:50999 259 1148Laura White29 May 1965
11:00999 880 3320Marissa Young9 March 1961
11:10999 901 7732Naomi Bell21 September 1974
11:20999 216 5087Paige Long4 July 1969
11:30999 487 9901Catherine Wood16 January 1956
11:40999 603 1774Victoria Hale13 October 1966
11:50999 905 6423Imogen Frost31 December 1972
12:00999 332 1108Dara Moss24 June 1960
12:10999 427 5930Sophie Hartley2 August 1962
12:20999 218 3446Emma Cole17 April 1975
-
-
-
-
- -
-
-
-

- Afternoon session - 13:30 to 17:30 -

-
-
- - - 0 slots available of 24 - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Time - - NHS Number - - Full name - - Date of birth -
13:30999 109 8875Megan Price5 February 1961
13:40999 678 2209Mia Ford19 May 1972
13:50999 502 6683Zoe Grant11 March 1965
14:00999 244 1196Ariana Miles28 November 1959
14:10999 883 4455Bethany Cross7 July 1975
14:20999 771 9002Callie Morris14 September 1968
14:30999 439 3321Helena Rowe2 April 1963
14:40999 210 5587Danielle Nash23 June 1970
14:50999 619 4470Faye Turner8 January 1957
15:00999 908 2233Leona Grant15 October 1974
15:10999 776 9904Nora Blake30 December 1966
15:20999 665 8805Olivia Lee19 August 1960
15:30999 554 7706Priya Desai10 May 1973
15:40999 443 6607Quinn Park26 March 1964
15:50999 332 5508Rosa Kirk13 July 1958
16:00999 221 4409Shannon Boyd22 November 1971
16:10999 110 3310Tara Voss9 February 1969
16:20999 009 2201Uma Jha17 September 1962
16:30999 898 1192Victoria Dean4 April 1976
16:40999 787 0083Wendy Fox21 June 1967
16:50999 676 9974Xena Holt11 December 1960
17:00999 565 8865Yasmin Noor28 August 1961
17:10999 454 7756Zara Moon6 May 1973
17:20999 343 6647Abigail Stone14 October 1959
-
-
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Time + + NHS Number + + Full name + + Date of birth +
09:00999 054 3666Billie Joanne Marquardt15 March 1960
09:10999 582 7164Alice Marie Gregory8 November 1964
09:20999 374 0952Daphne Hart22 July 1958
09:30999 195 4836Marta O'Neill3 May 1971
09:40999 287 9305Susan Carter19 September 1967
09:50999 463 1129Olivia Barnes12 January 1975
10:00999 774 2201Rachel Price27 April 1962
10:10999 546 8870Hannah Wallace6 October 1959
10:20999 559 3322Fiona Lambert14 December 1973
10:30999 804 7753Georgia Mills30 June 1968
\ No newline at end of file From 302efd0408ce38c4bf4df43c517ca4cb55ebec1a Mon Sep 17 00:00:00 2001 From: Mat Johnson Date: Wed, 26 Aug 2026 13:24:30 +0100 Subject: [PATCH 06/15] Heavily associate 'proceed' action with participant count --- .../includes/participant-staging-control.html | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/app/views/september-iteration-2/includes/participant-staging-control.html b/app/views/september-iteration-2/includes/participant-staging-control.html index b70884c..41372bc 100644 --- a/app/views/september-iteration-2/includes/participant-staging-control.html +++ b/app/views/september-iteration-2/includes/participant-staging-control.html @@ -8,20 +8,15 @@

{{ data.stagedCount }} participant{% if data.stagedCount > 1 %}s{% endif %} ready to book

+ + + + Proceed to book participants + + {% endif %}
- - -
- {% if data.stagedCount > 0 %} - - - - Proceed to book participants - - - {% endif %}
\ No newline at end of file From b4922cad3ae5029b7ba9fd006356240018b42d5d Mon Sep 17 00:00:00 2001 From: Mat Johnson Date: Wed, 26 Aug 2026 13:26:32 +0100 Subject: [PATCH 07/15] Fix up table in booking preview page --- app/views/september-iteration-2/clickthru/05-review.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/september-iteration-2/clickthru/05-review.html b/app/views/september-iteration-2/clickthru/05-review.html index 1df5e4b..a251023 100644 --- a/app/views/september-iteration-2/clickthru/05-review.html +++ b/app/views/september-iteration-2/clickthru/05-review.html @@ -35,10 +35,10 @@

- +
- - + From dffec8bcaeefcec0d536d156d82a3787d7a11a36 Mon Sep 17 00:00:00 2001 From: Mat Johnson Date: Wed, 26 Aug 2026 13:29:13 +0100 Subject: [PATCH 08/15] Set example clinic data to 10 slots just for now --- app/data/session-data-defaults.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/data/session-data-defaults.js b/app/data/session-data-defaults.js index 9e89485..812305b 100644 --- a/app/data/session-data-defaults.js +++ b/app/data/session-data-defaults.js @@ -13,6 +13,6 @@ module.exports = { clinicTimespan: "1 September 2026", clinicLength: "1 day", clinicCapacityPercentBooked: "0", - clinicCapacityAvailable: "48", - clinicCapacityTotal: "48" + clinicCapacityAvailable: "10", + clinicCapacityTotal: "10" } \ No newline at end of file From ebd1af22263a552996f6cc8e77bac9166fb7b3c3 Mon Sep 17 00:00:00 2001 From: Mat Johnson Date: Wed, 26 Aug 2026 14:07:02 +0100 Subject: [PATCH 09/15] Delete unnecessary files and update index --- app/views/index.html | 81 ++-- .../appointing-complete.html | 422 ------------------ .../september-iteration-2/batch-detail.html | 62 --- .../create-clinic-rev-1-publish-check.html | 3 +- .../pre-appoint-confirm.html | 269 ----------- .../search-and-results.html | 305 ------------- .../september-iteration-2/select-clinic.html | 111 ----- .../september-iteration-2/upload-a-batch.html | 36 -- 8 files changed, 39 insertions(+), 1250 deletions(-) delete mode 100644 app/views/september-iteration-2/appointing-complete.html delete mode 100644 app/views/september-iteration-2/batch-detail.html delete mode 100644 app/views/september-iteration-2/pre-appoint-confirm.html delete mode 100644 app/views/september-iteration-2/search-and-results.html delete mode 100644 app/views/september-iteration-2/select-clinic.html delete mode 100644 app/views/september-iteration-2/upload-a-batch.html diff --git a/app/views/index.html b/app/views/index.html index c03bb3c..2c7fb86 100755 --- a/app/views/index.html +++ b/app/views/index.html @@ -138,6 +138,11 @@

March 2026


Mission 1

+

Create clinic module: live test #2

Enable test BSO to creat a clinic lasting one day

    @@ -145,51 +150,37 @@

    Create clinic module: live test #2

    Create a new clinic from listing page
-

Iteration 2

+

Live test #1

+

Users upload a csv containing the participants they wish to book into a prearranged single day clinic.

- Click-thru journey (all hard coded as an example) + Click-thru journey

-
    -
  1. - Upload a batch -
  2. -
  3. - Batch detail -
  4. -
  5. - Selecting the clinic to be used -
  6. -
  7. - Adding participants to a staging group -
  8. -
  9. - Review and book -
  10. -
  11. - Single day of appointments -
  12. -
-

Iteration 1

-

Users upload a csv containing the participants they wish to book into a prearranged single day clinic.

- -
    -
  1. - Upload a batch -
  2. -
  3. - Batch detail for trimmed csv -
  4. -
  5. - Pre-appointment confirmation -
  6. -
  7. - Single day of appointments -
  8. -
-

Defunct work on finding and grouping participants. Components to be reused elsewhere.

-
    + +
    + + + Older work (may be broken) + + +
    +

    Iteration 1

    +

    Users upload a csv containing the participants they wish to book into a prearranged single day clinic.

    +
      +
    1. + Upload a batch +
    2. +
    3. + Batch detail for trimmed csv +
    4. +
    5. + Pre-appointment confirmation +
    6. +
    7. + Single day of appointments +
    8. +
    +

    Defunct work on finding and grouping participants. Components to be reused elsewhere.

    +
    1. Batch detail
    2. @@ -205,7 +196,9 @@

      Iteration 1

    3. [Utility] "appointing" spinner
    4. -
    +
+ +
diff --git a/app/views/september-iteration-2/appointing-complete.html b/app/views/september-iteration-2/appointing-complete.html deleted file mode 100644 index 86c1344..0000000 --- a/app/views/september-iteration-2/appointing-complete.html +++ /dev/null @@ -1,422 +0,0 @@ -{% extends 'layout.html' %} - -{% set pageName = "" %} - -{% from "z-september-transactional-journey/_includes/min-primary-navigation.html" import primaryNavigation %} -{% block header %} - {{ primaryNavigation() }} -{% endblock %} - -{% block beforeContent %}{% endblock %} - -{% block content %} - - -
-
- {% set html %} -

- 48 participants booked -

- {% endset %} - {{ notificationBanner({ - html: html, - type: "success" - }) }} -
-

- CLINC-ID - Test Clinic 1 -

-
- Unit name at location name -
- {{ actionLink({ - text: "Download .csv", - href: "#" - }) }} -
-
-
- -
- -
-
-

- Tuesday - 1 September 2026 -

-
-
- -
-
-

- Morning session - 08:30 to 12:30 -

-
- - - 0 slots available of 24 - - -
-
+ NHS Number @@ -53,7 +53,7 @@

{% for participant in data.participants.default %} {% if participant.status === "staged" %}

{{ participant.nhs_number }}{{ participant.nhs_number }} {{ participant.full_name }} {{ participant.date_of_birth }}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Time - - NHS Number - - Full name - - Date of birth -
08:30999 054 3666Billie Joanne Marquardt15 March 1960
08:40999 582 7164Alice Marie Gregory8 November 1964
08:50999 374 0952Daphne Hart22 July 1958
09:00999 195 4836Marta O'Neill3 May 1971
09:10999 287 9305Susan Carter19 September 1967
09:20999 463 1129Olivia Barnes12 January 1975
09:30999 774 2201Rachel Price27 April 1962
09:40999 546 8870Hannah Wallace6 October 1959
09:50999 559 3322Fiona Lambert14 December 1973
10:00999 804 7753Georgia Mills30 June 1968
10:10999 290 4601Elaine Fox11 February 1976
10:20999 613 2084Tessa King25 August 1963
10:30999 118 9756Nadia Singh7 April 1957
10:40999 039 6617Jane Reed18 November 1970
10:50999 259 1148Laura White29 May 1965
11:00999 880 3320Marissa Young9 March 1961
11:10999 901 7732Naomi Bell21 September 1974
11:20999 216 5087Paige Long4 July 1969
11:30999 487 9901Catherine Wood16 January 1956
11:40999 603 1774Victoria Hale13 October 1966
11:50999 905 6423Imogen Frost31 December 1972
12:00999 332 1108Dara Moss24 June 1960
12:10999 427 5930Sophie Hartley2 August 1962
12:20999 218 3446Emma Cole17 April 1975
-
- - - - -
-
-
-

- Afternoon session - 13:30 to 17:30 -

-
-
- - - 0 slots available of 24 - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Time - - NHS Number - - Full name - - Date of birth -
13:30999 109 8875Megan Price5 February 1961
13:40999 678 2209Mia Ford19 May 1972
13:50999 502 6683Zoe Grant11 March 1965
14:00999 244 1196Ariana Miles28 November 1959
14:10999 883 4455Bethany Cross7 July 1975
14:20999 771 9002Callie Morris14 September 1968
14:30999 439 3321Helena Rowe2 April 1963
14:40999 210 5587Danielle Nash23 June 1970
14:50999 619 4470Faye Turner8 January 1957
15:00999 908 2233Leona Grant15 October 1974
15:10999 776 9904Nora Blake30 December 1966
15:20999 665 8805Olivia Lee19 August 1960
15:30999 554 7706Priya Desai10 May 1973
15:40999 443 6607Quinn Park26 March 1964
15:50999 332 5508Rosa Kirk13 July 1958
16:00999 221 4409Shannon Boyd22 November 1971
16:10999 110 3310Tara Voss9 February 1969
16:20999 009 2201Uma Jha17 September 1962
16:30999 898 1192Victoria Dean4 April 1976
16:40999 787 0083Wendy Fox21 June 1967
16:50999 676 9974Xena Holt11 December 1960
17:00999 565 8865Yasmin Noor28 August 1961
17:10999 454 7756Zara Moon6 May 1973
17:20999 343 6647Abigail Stone14 October 1959
-
-
-
-
-{% endblock %} - -{% block footer %} - {{ footer() }} -{% endblock %} diff --git a/app/views/september-iteration-2/batch-detail.html b/app/views/september-iteration-2/batch-detail.html deleted file mode 100644 index 5658f70..0000000 --- a/app/views/september-iteration-2/batch-detail.html +++ /dev/null @@ -1,62 +0,0 @@ -{% extends 'layout.html' %} - -{% set pageName = "Batch detail" %} - -{% from "z-september-transactional-journey/_includes/min-primary-navigation.html" import primaryNavigation %} -{% block header %} - {{ primaryNavigation() }} -{% endblock %} - -{% block beforeContent %}{% endblock %} - -{% block content %} - -
-
- {% set html %} -

- Batch uploaded -

- {% endset %} - {{ notificationBanner({ - html: html, - type: "success" - }) }} -

- BS1345815F - Test batch 1 -

-
- Batch uploaded 11 June 2026 at 15:53 -
-
-
- -
-
-
-
-

- - 2172 - -

- total participants -
-
-
-
- - - -{% endblock %} - -{% block footer %} - {{ footer() }} -{% endblock %} diff --git a/app/views/september-iteration-2/create-clinic-rev-1-publish-check.html b/app/views/september-iteration-2/create-clinic-rev-1-publish-check.html index 56103a6..3d7b9f0 100644 --- a/app/views/september-iteration-2/create-clinic-rev-1-publish-check.html +++ b/app/views/september-iteration-2/create-clinic-rev-1-publish-check.html @@ -71,7 +71,8 @@

Save clinic

{{ data.clinicDate | formatDate }}
{{ data.newSession.startTime.hour | zeroPad }}:{{ data.newSession.startTime.minute | zeroPad }} to {{ data.newSession.endTime.hour | zeroPad }}:{{ data.newSession.endTime.minute | zeroPad }}
- {{ data.newSession.duration }} minute slot length + {{ data.newSession.duration }} minute slot length
+ {{ data.clinicCapacityTotal }} total capacity
Change date and time diff --git a/app/views/september-iteration-2/pre-appoint-confirm.html b/app/views/september-iteration-2/pre-appoint-confirm.html deleted file mode 100644 index 7cd74ff..0000000 --- a/app/views/september-iteration-2/pre-appoint-confirm.html +++ /dev/null @@ -1,269 +0,0 @@ -{% extends 'layout.html' %} - -{% set pageName = "Assign slots to participants" %} - -{% from "z-september-transactional-journey/_includes/min-primary-navigation.html" import primaryNavigation %} -{% block header %} - {{ primaryNavigation() }} -{% endblock %} - -{% block beforeContent %}{% endblock %} - -{% block content %} - - - -
-

- Book participants -

-
- -
-
- -

You are booking 48 participants

- -
- - - Show chosen participants - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- NHS Number - - Full name - - Date of birth -
999 054 3666 - Billie Joanne Marquardt - 15 March 1960
999 582 7164Alice Marie Gregory8 November 1964
999 374 0952Daphne Hart22 July 1958
999 195 4836Marta O'Neill3 May 1971
999 287 9305Susan Carter19 September 1967
999 463 1129Olivia Barnes12 January 1975
999 774 2201Rachel Price27 April 1962
999 546 8870Hannah Wallace6 October 1959
999 559 3322Fiona Lambert14 December 1973
999 804 7753Georgia Mills30 June 1968
999 290 4601Elaine Fox11 February 1976
999 613 2084Tessa King25 August 1963
999 109 8875Megan Price5 February 1961
999 678 2209Mia Ford19 May 1972
999 502 6683Zoe Grant11 March 1965
999 244 1196Ariana Miles28 November 1959
999 883 4455Bethany Cross7 July 1975
999 771 9002Callie Morris14 September 1968
999 439 3321Helena Rowe2 April 1963
999 210 5587Danielle Nash23 June 1970
999 619 4470Faye Turner8 January 1957
999 908 2233Leona Grant15 October 1974
999 776 9904Nora Blake30 December 1966
-
-
- -

into Chichester - standard slots May 2026

-
- - - Show clinic details - - -
- - - - - - - - - - - - - - - - - - - -
- Clinic - - Location - - Unit - - Timeframe - - Capacity -
- Chichester - standard slots May 2026
- HWO-NNN-standard-20260501 -
- Chichester
- St Richard’s Hospital -
- Alpha van
- HWO-mobile-1 -
- 31 May 2026
- 1 day -
-
- 48 slots available of 48 -
-
-
- -
-

Participants will be booked in random order.

-
- -
-
- - - -{% endblock %} - -{% block footer %} - {{ footer() }} -{% endblock %} diff --git a/app/views/september-iteration-2/search-and-results.html b/app/views/september-iteration-2/search-and-results.html deleted file mode 100644 index 0bc24af..0000000 --- a/app/views/september-iteration-2/search-and-results.html +++ /dev/null @@ -1,305 +0,0 @@ -{% extends 'layout.html' %} - -{% set pageName = "" %} - -{% from "z-september-transactional-journey/_includes/min-primary-navigation.html" import primaryNavigation %} -{% block header %} - {{ primaryNavigation() }} -{% endblock %} - -{% block beforeContent %}{% endblock %} - -{% block content %} - -
-

- Choose participants to book -

-
- -
-
-
- -
- Search by NHS number, first name, or last name -
-
- - -
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - 2000 participants -
- NHS Number - - Full name - - Date of birth - - Status - - Actions -
999 565 8865Yasmin Noor28 August 1961 - Will not be booked - - Add -
999 454 7756Zara Moon6 May 1973 - Will not be booked - - Add -
999 343 6647Abigail Stone14 October 1959 - Will not be booked - - Add -
999 054 3666Billie Joanne Marquardt15 March 1960 - Will not be booked - - Add -
999 582 7164Alice Marie Gregory8 November 1964 - Will not be booked - - Add -
999 374 0952Daphne Hart22 July 1958 - Will not be booked - - Add -
999 195 4836Marta O'Neill3 May 1971 - Will not be booked - - Add -
999 287 9305Susan Carter19 September 1967 - Will not be booked - - Add -
999 463 1129Olivia Barnes12 January 1975 - Will not be booked - - Add -
999 774 2201Rachel Price27 April 1962 - Will not be booked - - Add -
999 676 9974Xena Holt11 December 1960 - - Will not be booked - - Add -
999 546 8870Hannah Wallace6 October 1959 - Will not be booked - - Add -
999 559 3322Fiona Lambert14 December 1973 - Will not be booked - - Add -
999 804 7753Georgia Mills30 June 1968 - Will not be booked - - Add -
999 290 4601Elaine Fox11 February 1976 - Will not be booked - - Add -
- - - - - -
-
- -
-
-
- Information: - -

0 participants ready to book

-
-
-
- - - - - -{% endblock %} - -{% block footer %} - {{ footer() }} -{% endblock %} diff --git a/app/views/september-iteration-2/select-clinic.html b/app/views/september-iteration-2/select-clinic.html deleted file mode 100644 index 53e98c5..0000000 --- a/app/views/september-iteration-2/select-clinic.html +++ /dev/null @@ -1,111 +0,0 @@ -{% extends 'layout.html' %} - -{% set pageName = "Batch detail" %} - -{% from "z-september-transactional-journey/_includes/min-primary-navigation.html" import primaryNavigation %} -{% block header %} - {{ primaryNavigation() }} -{% endblock %} - -{% block beforeContent %}{% endblock %} - -{% block content %} - -
-

- Select clinic -

-
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Clinic - - Location - - Unit - - Timeframe - - Capacity - - Action -
- Chichester - standard slots May 2026
- HWO-NNN-standard-20260501 -
- Chichester
- St Richard’s Hospital -
- Alpha van
- HWO-mobile-1 -
- 31 May 2026
- 1 day -
-
- 48 slots available of 48 -
- - Select this clinic - -
- Worthing - special slots May 2026
- HWO-NNN-special-20260501 -
- Worthing
- Worthing Hospital -
- Home base
- HWO-static-1 -
- 7, 21 May 2026
- 2 days -
-
- 40 slots available of 100 -
- - Select this clinic - -
-
-
- -{% endblock %} - -{% block footer %} - {{ footer() }} -{% endblock %} diff --git a/app/views/september-iteration-2/upload-a-batch.html b/app/views/september-iteration-2/upload-a-batch.html deleted file mode 100644 index 001e93e..0000000 --- a/app/views/september-iteration-2/upload-a-batch.html +++ /dev/null @@ -1,36 +0,0 @@ -{% extends 'layout.html' %} - -{% set pageName = "Upload a batch" %} - -{% from "z-september-transactional-journey/_includes/min-primary-navigation.html" import primaryNavigation %} -{% block header %} - {{ primaryNavigation() }} -{% endblock %} - -{% block content %} - -
-
-
-

- -

- -
- - - -
-
- -{% endblock %} - -{% block footer %} - {{ footer() }} -{% endblock %} From a8947858d35739b2be722993b3520a5d51d1835f Mon Sep 17 00:00:00 2001 From: Mat Johnson Date: Wed, 26 Aug 2026 14:13:51 +0100 Subject: [PATCH 10/15] Link to the indicator star in Mural --- app/views/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/index.html b/app/views/index.html index 2c7fb86..e9f6254 100755 --- a/app/views/index.html +++ b/app/views/index.html @@ -140,7 +140,7 @@

March 2026

Mission 1

Create clinic module: live test #2

From 56832ea0d9185ac52ad673eb983e476f9c0ecae4 Mon Sep 17 00:00:00 2001 From: Mat Johnson Date: Wed, 26 Aug 2026 14:14:19 +0100 Subject: [PATCH 11/15] Comment out example 'booked' tag --- .../september-iteration-2/macros/participant-listing.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/september-iteration-2/macros/participant-listing.html b/app/views/september-iteration-2/macros/participant-listing.html index 6bf02f4..822265a 100644 --- a/app/views/september-iteration-2/macros/participant-listing.html +++ b/app/views/september-iteration-2/macros/participant-listing.html @@ -41,9 +41,9 @@ Ready to book - + {% endif %}
From ad38af14b40d81b65e6fb1be0caccb49302f679e Mon Sep 17 00:00:00 2001 From: Mat Johnson Date: Wed, 26 Aug 2026 15:17:53 +0100 Subject: [PATCH 12/15] Moving Mission 1 routes into their own file for simplicity --- app/routes.js | 78 +------------------ app/routes/mission-1.js | 63 +++++++++++++++ .../create-clinic-rev-1-publish-check.html | 2 +- 3 files changed, 68 insertions(+), 75 deletions(-) create mode 100644 app/routes/mission-1.js diff --git a/app/routes.js b/app/routes.js index c580e8d..378f7c5 100644 --- a/app/routes.js +++ b/app/routes.js @@ -332,58 +332,6 @@ router.get('/clinics-schedules/06-apply-session', function (req, res) { res.render('clinics-schedules/06-apply-session') }) -router.get('/september-iteration-2/clickthru/04a-example-search-result', function (req, res) { - const query = (req.query['search-params'] || '').trim() - const allParticipants = (req.session.data.participants && req.session.data.participants.default) || [] - const normalizedQuery = query.toLowerCase().replace(/\s+/g, ' ') - const nhsQuery = normalizedQuery.replace(/\s+/g, '') - - const searchResults = (normalizedQuery ? allParticipants.map((participant, index) => { - const nhs = participant.nhs_number.toLowerCase().replace(/\s+/g, '') - const name = participant.full_name.toLowerCase() - const dob = participant.date_of_birth.toLowerCase() - - if ( - nhs.includes(nhsQuery) || - name.includes(normalizedQuery) || - dob.includes(normalizedQuery) - ) { - return Object.assign({}, participant, { participantIndex: index }) - } - - return null - }).filter(Boolean) : allParticipants.map((participant, index) => Object.assign({}, participant, { participantIndex: index }))) - - res.render('september-iteration-2/clickthru/04a-example-search-result', { - participants: searchResults, - searchQuery: query - }) -}) - -router.get('/action/stage/:participantId', function (req, res) { - const participants = (req.session.data.participants && req.session.data.participants.default) || [] - const participantIndex = participants.findIndex((participant) => participant.participantId === req.params.participantId) - - if (participantIndex !== -1) { - participants[participantIndex].status = 'staged' - req.session.data.stagedCount++ - } - - res.redirect(req.get('referer') || '/september-iteration-2/clickthru/04-choose-participants') -}); - -router.get('/action/unstage/:participantId', function (req, res) { - const participants = (req.session.data.participants && req.session.data.participants.default) || [] - const participantIndex = participants.findIndex((participant) => participant.participantId === req.params.participantId) - - if (participantIndex !== -1) { - participants[participantIndex].status = 'unstaged' - req.session.data.stagedCount-- - } - - res.redirect(req.get('referer') || '/september-iteration-2/clickthru/04-choose-participants') -}); - // ====== session setup handlers const isWholeNumber = str => /^\d+$/.test(str) @@ -752,28 +700,6 @@ router.get('/clinics-schedules/09-prototype-end', function (req, res) { res.render('clinics-schedules/09-prototype-end') }) -router.get('/action/stage/:participantId', function (req, res) { - const participants = (req.session.data.participants && req.session.data.participants.default) || [] - const participantIndex = participants.findIndex((participant) => participant.participantId === req.params.participantId) - - if (participantIndex !== -1) { - participants[participantIndex].status = 'staged' - req.session.data.stagedCount++ - } - - res.redirect(req.get('referer') || '/september-iteration-2/clickthru/04-choose-participants') -}); - -router.get('/action/unstage/:participantId', function (req, res) { - const participants = (req.session.data.participants && req.session.data.participants.default) || [] - const participantIndex = participants.findIndex((participant) => participant.participantId === req.params.participantId) - - if (participantIndex !== -1) { - participants[participantIndex].status = 'unstaged' - req.session.data.stagedCount-- - } -}) - router.post('/sessions/02-organise-slots', function (req, res) { if (req.session.data.sessionCreationType === 'new session template') { res.redirect('/sessions/templating-03-name-and-description') @@ -782,4 +708,8 @@ router.post('/sessions/02-organise-slots', function (req, res) { } }) + +// Isolated September Test (Mission 1) routes +router.use(require('./routes/mission-1')); + module.exports = router diff --git a/app/routes/mission-1.js b/app/routes/mission-1.js new file mode 100644 index 0000000..102c6ef --- /dev/null +++ b/app/routes/mission-1.js @@ -0,0 +1,63 @@ +const express = require('express') +const router = express.Router() + +// Routes and functions specific to Mission 1 prototypes +/* + +/appviews/september-iteration-2/ + +*/ + +router.get('/september-iteration-2/clickthru/04a-example-search-result', function (req, res) { + const query = (req.query['search-params'] || '').trim() + const allParticipants = (req.session.data.participants && req.session.data.participants.default) || [] + const normalizedQuery = query.toLowerCase().replace(/\s+/g, ' ') + const nhsQuery = normalizedQuery.replace(/\s+/g, '') + + const searchResults = (normalizedQuery ? allParticipants.map((participant, index) => { + const nhs = participant.nhs_number.toLowerCase().replace(/\s+/g, '') + const name = participant.full_name.toLowerCase() + const dob = participant.date_of_birth.toLowerCase() + + if ( + nhs.includes(nhsQuery) || + name.includes(normalizedQuery) || + dob.includes(normalizedQuery) + ) { + return Object.assign({}, participant, { participantIndex: index }) + } + + return null + }).filter(Boolean) : allParticipants.map((participant, index) => Object.assign({}, participant, { participantIndex: index }))) + + res.render('september-iteration-2/clickthru/04a-example-search-result', { + participants: searchResults, + searchQuery: query + }) +}) + +router.get('/action/stage/:participantId', function (req, res) { + const participants = (req.session.data.participants && req.session.data.participants.default) || [] + const participantIndex = participants.findIndex((participant) => participant.participantId === req.params.participantId) + + if (participantIndex !== -1) { + participants[participantIndex].status = 'staged' + req.session.data.stagedCount++ + } + + res.redirect(req.get('referer') || '/september-iteration-2/clickthru/04-choose-participants') +}); + +router.get('/action/unstage/:participantId', function (req, res) { + const participants = (req.session.data.participants && req.session.data.participants.default) || [] + const participantIndex = participants.findIndex((participant) => participant.participantId === req.params.participantId) + + if (participantIndex !== -1) { + participants[participantIndex].status = 'unstaged' + req.session.data.stagedCount-- + } + + res.redirect(req.get('referer') || '/september-iteration-2/clickthru/04-choose-participants') +}); + +module.exports = router \ No newline at end of file diff --git a/app/views/september-iteration-2/create-clinic-rev-1-publish-check.html b/app/views/september-iteration-2/create-clinic-rev-1-publish-check.html index 3d7b9f0..89ac670 100644 --- a/app/views/september-iteration-2/create-clinic-rev-1-publish-check.html +++ b/app/views/september-iteration-2/create-clinic-rev-1-publish-check.html @@ -72,7 +72,7 @@

Save clinic

{{ data.clinicDate | formatDate }}
{{ data.newSession.startTime.hour | zeroPad }}:{{ data.newSession.startTime.minute | zeroPad }} to {{ data.newSession.endTime.hour | zeroPad }}:{{ data.newSession.endTime.minute | zeroPad }}
{{ data.newSession.duration }} minute slot length
- {{ data.clinicCapacityTotal }} total capacity + {{ data.newSession.totalSlots }} total capacity
Change date and time From f3399253fcaa7900bf4d09067a0f5453713aac07 Mon Sep 17 00:00:00 2001 From: Mat Johnson Date: Wed, 26 Aug 2026 15:43:27 +0100 Subject: [PATCH 13/15] Calculate and carry through a slot total --- app/routes/mission-1.js | 18 +++++++++++++++++- .../create-clinic-rev-1-publish-check.html | 11 +++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/app/routes/mission-1.js b/app/routes/mission-1.js index 102c6ef..c0ea97c 100644 --- a/app/routes/mission-1.js +++ b/app/routes/mission-1.js @@ -8,6 +8,7 @@ const router = express.Router() */ +// simple search router.get('/september-iteration-2/clickthru/04a-example-search-result', function (req, res) { const query = (req.query['search-params'] || '').trim() const allParticipants = (req.session.data.participants && req.session.data.participants.default) || [] @@ -36,6 +37,7 @@ router.get('/september-iteration-2/clickthru/04a-example-search-result', functio }) }) +// adding and removing participants from the "group" router.get('/action/stage/:participantId', function (req, res) { const participants = (req.session.data.participants && req.session.data.participants.default) || [] const participantIndex = participants.findIndex((participant) => participant.participantId === req.params.participantId) @@ -47,7 +49,6 @@ router.get('/action/stage/:participantId', function (req, res) { res.redirect(req.get('referer') || '/september-iteration-2/clickthru/04-choose-participants') }); - router.get('/action/unstage/:participantId', function (req, res) { const participants = (req.session.data.participants && req.session.data.participants.default) || [] const participantIndex = participants.findIndex((participant) => participant.participantId === req.params.participantId) @@ -60,4 +61,19 @@ router.get('/action/unstage/:participantId', function (req, res) { res.redirect(req.get('referer') || '/september-iteration-2/clickthru/04-choose-participants') }); +// creating and passing Total Slots through for 1 day clinic creation +router.post('/september-iteration-2/create-clinic-rev-1-publish-check', function (req, res) { + const newSession = req.session.data.newSession || {} + const startTime = newSession.startTime || {} + const endTime = newSession.endTime || {} + + const startMinutes = (parseInt(startTime.hour, 10) || 0) * 60 + (parseInt(startTime.minute, 10) || 0) + const endMinutes = (parseInt(endTime.hour, 10) || 0) * 60 + (parseInt(endTime.minute, 10) || 0) + const duration = parseInt(newSession.duration, 10) || 0 + + newSession.totalSlots = duration > 0 ? Math.floor((endMinutes - startMinutes) / duration) : 0 + + res.render('september-iteration-2/create-clinic-rev-1-publish-check') +}) + module.exports = router \ No newline at end of file diff --git a/app/views/september-iteration-2/create-clinic-rev-1-publish-check.html b/app/views/september-iteration-2/create-clinic-rev-1-publish-check.html index 89ac670..fb7bed5 100644 --- a/app/views/september-iteration-2/create-clinic-rev-1-publish-check.html +++ b/app/views/september-iteration-2/create-clinic-rev-1-publish-check.html @@ -71,13 +71,20 @@

Save clinic

{{ data.clinicDate | formatDate }}
{{ data.newSession.startTime.hour | zeroPad }}:{{ data.newSession.startTime.minute | zeroPad }} to {{ data.newSession.endTime.hour | zeroPad }}:{{ data.newSession.endTime.minute | zeroPad }}
- {{ data.newSession.duration }} minute slot length
- {{ data.newSession.totalSlots }} total capacity + {{ data.newSession.duration }} minute slot length
Change date and time
+
+
+ Total capacity +
+
+ {{ data.newSession.totalSlots }} slots +
+

From 7ee78dfeca3ec312919e299b2208546dae3bf1ee Mon Sep 17 00:00:00 2001 From: Mat Johnson Date: Wed, 26 Aug 2026 16:14:02 +0100 Subject: [PATCH 14/15] Use -solid for back control on checking page to bump it up a bit --- app/views/september-iteration-2/clickthru/05-review.html | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/views/september-iteration-2/clickthru/05-review.html b/app/views/september-iteration-2/clickthru/05-review.html index a251023..f54b1e1 100644 --- a/app/views/september-iteration-2/clickthru/05-review.html +++ b/app/views/september-iteration-2/clickthru/05-review.html @@ -19,7 +19,6 @@

-

{% if data.stagedCount === 1 %} You are booking 1 participant @@ -106,7 +105,7 @@

into {{ data.clinicName }}

Confirm - + Go back
From 7c01e8d5c76fab829fe9726ddf67a78dbd0a1cfa Mon Sep 17 00:00:00 2001 From: Mat Johnson Date: Wed, 26 Aug 2026 16:21:53 +0100 Subject: [PATCH 15/15] Popping in an interrupt tmeplate, not yet in the prototype flow --- .../clickthru/05a-review-interrupt.html | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 app/views/september-iteration-2/clickthru/05a-review-interrupt.html diff --git a/app/views/september-iteration-2/clickthru/05a-review-interrupt.html b/app/views/september-iteration-2/clickthru/05a-review-interrupt.html new file mode 100644 index 0000000..ac909aa --- /dev/null +++ b/app/views/september-iteration-2/clickthru/05a-review-interrupt.html @@ -0,0 +1,44 @@ +{% extends 'layout.html' %} + +{% set pageName = "Assign slots to participants" %} + +{% from "z-september-transactional-journey/_includes/min-primary-navigation.html" import primaryNavigation %} +{% block header %} + {{ primaryNavigation() }} +{% endblock %} + +{% block beforeContent %} + + Back + +{% endblock %} + +{% block content %} +
+
+ +
+

+ 2 slots remaining +

+
+

+ You are booking 8 participants into Test Clinic which has 10 slots available. +

+

Do you want to go back and add participants?

+ +
+
+ +
+
+{% endblock %} + +{% block footer %} + {{ footer() }} +{% endblock %}