Releases: nhsuk/manage-vaccinations-in-schools
v1.3.2
Full Changelog: v1.3.1...v1.3.2
This is an emergency release planned for 2025-02-05.
Under the hood
Increase interval between PDS jobs #2937
We're still seeing the issue in production where the PDS jobs get stuck in a state where none of them can process successfully. Running some experiments by queueing the jobs manually via a Rails console suggests a 2 second interval between the jobs is handled much better, although it means that it'll take ~11 hours to process all the patients.
We are also changing the schedule for the bulk PDS lookup jobs to run at 6:00 and 18:00, instead of 0:00, 8:00, 12:00 and 18:00. This is to give the bulk jobs the time to finish before starting another one, which would likely trigger our contention issues again.
v1.3.1
Full Changelog: v1.3.0...v1.3.1
This is planned for release on 2025-02-03.
Under the hood
Increase wait time between PDS jobs #2922
We're seeing a problem in production where the queues for PDS jobs gets full with jobs that are not succeeding, likely related to the rate limit.
This wait time was added to artificially slow down the queues and prevent them from needing to be retried, so increasing this wait time should reduce the changes of the jobs ending up in this stuck state.
Increase wait time between PDS executions #2923
This increases the wait time between jobs that interact with the NHS API depending on the number of executions that we've already tried for that job. If the number is high, it suggests that jobs aren't succeeding and that we should throttle the number of jobs getting through.
v1.3.0
Post-deployment tasks
- Revert change to session reminder email template, see: https://trello.com/c/6yPgl600/1829-ensure-session-reminders-are-sent-out-when-there-is-only-one-session-date
New features
MAVIS-1812: Show separate activity log entries for a parent submitting consent and the consent being manually matched to a cohort record #2828
The activity log now includes an entry when a SAIS team member manually matches a consent form with a patient record in the cohort. The entry includes the name of the person who made the match.
MAVIS-1641: Patients with invalid NHS numbers should be re-traced using demographic details #2723
If Mavis traces a previously invalid patient record in the Personal Demographics Service and they're now marked as valid, it should add them to an upcoming session if appropriate.
MAVIS-1790: Make it easier to see the numbers of unresolved import issues, school moves, unmatched consent responses and/or important notices #2808 #2845 #2847
The Mavis navigation bar now displays the numbers of:
- unresolved import issues
- school moves
- unmatched consent responses
- important notices (for superusers)
MAVIS-1803: Make it easier to see which school a class list upload is for #2797
For class list uploads, the school name is now displayed on the upload list and on the upload details page. The upload details page also provides a link to jump to the school session.
MAVIS-1782: Archive consent consent responses from the unmatched consent responses page #2846
Mavis now allows archiving consent consent responses from the unmatched consent responses page e.g. if a parent has submitted a consent form for a sibling who isn’t eligible for the vaccine offer in this programme.
Bug fixes
MAVIS-1840: Postcode sorting issue for S-flagged records #2827
This prevents information about restricted patients being leaked inadvertently, as although the information itself was not shown, by using the sorting and filtering functionality it's possible to guess what the value might be.
Instead Mavis treats restricted patients as having no postcode for the purpose of filtering and sorting.
MAVIS-1829: Ensure session reminders are sent out when there is only one session date #2823
Fix an issue where school session reminder emails weren’t being sent when the school only had one session date.
Under the hood
- Refactor: Raise
NHS::PDS::TooManyMatches
#2758 - Refactor: Use
params.expect
#2801 - Refactor: Record PDS error responses in Sentry #2757
- Refactor: Enable strict loading globally #2771
- Refactor: Improve email address and phone number normalisation #2831
- Refactor: Remove
parent_full_name
personalisation #2829 - Refactor: Link text delivery with GOV.UK Notify IDs #2832
- Refactor: Fix typo in README #2842
- Refactor: Add .cursorrules #2807
- Performance: Increase application server node count to three in production #2909 (MAVIS-1916)
Dependency bumps
- Upgrade Ruby to 3.4.1 #2799
- Bump thruster from 0.1.9 to 0.1.10 #2834
- Bump aws-sdk-s3 from 1.176.1 to 1.177.0 #2838
- Bump activerecord-import from 1.8.1 to 2.0.0 #2837
- Bump govuk-frontend from 5.7.1 to 5.8.0 #2839
- Bump govuk-components from 5.7.1 to 5.8.0 #2836
- Bump govuk_design_system_formbuilder from 5.7.1 to 5.8.0 #2835
Issues raised since the last release
MAVIS-1877: Unable to merge patients when the patient without the NHS number has been vaccinated
Merging duplicate patient records fails with a 500
error when merging a patient with a NHS number into a vaccinated patient without a NHS number.
Workaround: SAIS teams should record vaccinations as usual, and add in the missing NHS number after the report is exported.
MAVIS-1895: Duplicate resolution screen shows incorrect information for address/postcode changes
When SAIS staff upload a class list (that has no addresses) with a child with a different postcode, the duplicate resolution screen incorrectly shows the old address with the new postcode in the duplicate record.
Workaround: Users should be advised that imports of incomplete information will merge the old data with the new, and to check the source spreadsheets before importing when this occurs.
MAVIS-1873: Duplicate records in reporting spreadsheet when an outcome is changed on the same day
Mavis's reporting includes all patient-related events even when, for example, a patient has two independent vaccination outcomes in a session such as the vaccination being delayed and then being performed. These are currently included for auditing purposes.
Workaround: Unwanted items can be removed from the reporting spreadsheet or filtered out until this issue is resolved.
MAVIS-1878: Free-text search on the global children view doesn't prioritise exact matches
Currently results are ordered alphabetically, rather than by match quality, meaning that exact matches fall below inexact but higher alphabetic matches.
Workaround: Users can page through the results to the right entry.
MAVIS-1871: Some children with consent assigned to both clinic and school sessions after school move is confirmed
Children with consent given are sitting under a Community Clinic session and School session after school move has been confirmed. The school move should have moved them from the community clinic into the school.
Workaround: Users can ask the Mavis product team to manually move users from a clinic session to the relevant school session.
MAVIS-1896: Incorrect activity log entry text for when a child record is created from an unmatched consent response
When a child record is created from an unmatched consent response, the first activity log entry for the child says "Consent response manually matched with child record". It should instead be clear that the child record has been created manually from a consent response.
Workaround: Users should be advised that child records created from consenet responses will have this as their initial activity log entry until a fix is released.
MAVIS-1918: Children with consent refused being mistakenly proposed to move to community clinic when closing session
When closing a school session, Mavis will report on outcomes from the session and which children are being moved into a community clinic. Currently Mavis is proposing to move children without consent to the community clinic. This logic has been questioned by users.
Workaround: Users can keep school sessions open without impact for the time-being until this issue is resolved.
MAVIS-1922: Parents can give consent for a child of any age
Mavis does not currently validate that the date of birth of a child referenced in a consent form is within the range that would be expected for a given cohort.
Workaround: Users should be advised to ignore or archive invalid consent responses.
MAVIS-1870: Back button on reason "Not given" goes to wrong screen
In some situations on a specific page during prescreening, clicking the in-page back link will take a user back to an incorrect page.
Workaround: Users can click the back link again to get back to the correct page.
v1.2.0
Full Changelog: v1.1.2...v1.2.0
This was released on 2025-01-20.
New features
MAVIS-1773: Allow patients who are "taught up a year" (who attend year 8 in school but who would be in a lower year purely by their date of birth) to be brought into the cohort #2780 #2826 INC0261265
If a patient record is uploaded in a class list or a cohort record, their year group is derived from their date of birth by default, according to local authority rules. There are validations that prevent patients in years 7 and below from being added to the HPV cohort.
It is now possible to override this derived year group by optionally specifying a CHILD_YEAR_GROUP
column. When specified, the year group will be taken from this value rather than derived from the date of birth.
MAVIS-1794: Always send SMS consent requests and reminders when Mavis has the phone numbers for the child's parents or carers #2824
For non-restricted patients, if Mavis has a phone number for a parent or carer, it will always use that phone number to send them consent requests and reminders.
Parents or carers can still opt-out from receiving updates about the vaccination via text message: consent confirmation, rejected, or vaccination given/not given updates.
Bug fixes
MAVIS-1774: Error when SAIS staff add NHS numbers to patient records under certain circumstances #2777 INC0267761
This fixes a bug where Mavis was unable to merge patient records if consent or session notifications were sent for that record.
MAVIS-1777: Error when SAIS staff upload a file in ISO-8859-1 encoding with validation errors #2782
This fixes a crash that happened if a user uploads a file with validation errors, and the cell causing the error contained certain special characters.
MAVIS-1793: Nurses can't sort patients if there are missing postcodes #2789 INC0266168
This fixes a bug where if a SAIS team member tries to sort on a table by postcode and some of the rows don't have a postcode, the sorting fails.
MAVIS-1804: Fix the date filtering inconsistencies between the CarePlus and Mavis reports #2796
This change ensures the CarePlus report behaves like the Mavis report by filtering vaccination records based on their technical dates (creation or last update) rather than the actual vaccination date. Specifically, any record whose creation or last update date falls within the specified date range is returned, regardless of when the vaccination itself was administered.
This primarily impacts records that were uploaded to Mavis on a different day than the actual vaccination (where the creation date is later than the vaccination date). Records added on the same day as the vaccination should remain unaffected.
MAVIS-1822: Fix crash when filtering by status on register attendance page #2781
This fixes an errors that users were seeing when attempting to filter by status on the Register Attendance page.
Under the hood
- Refactor: Remove consent_form_patient #2779
- Refactor: Patient factory: randomise the date of birth logic and align more obviously with year group calculations #2806
- Refactor: Use
Rails.env.local?
#2800 - Refactor: Update erroneously added primary school URN to the correct secondary school URN #2798
- Refactor: Update docker build step packages #2843
Dependency bumps
- Bump rubyXL from 3.4.27 to 3.4.33 #2794
- Bump Brakeman to 7.0.0 #2809
- Bump rubyzip from 2.3.2 to 2.4.1 #2811
- Bump good_job from 4.6.0 to 4.7.0 #2812
- Bump aws-sdk-ecr from 1.88.0 to 1.91.0 #2813
- Bump sass from 1.83.0 to 1.83.1 #2814
- Bump hotwire-livereload from 1.4.1 to 2.0.0 #2810
New known issues
MAVIS-1824: Missing validation when uploading a vaccination record file without entering a time of vaccination (Vaccination time left blank)
When no vaccination time is entered in the uploaded spreadsheet, the system defaults the time to 12pm. This can lead to confusion if the actual vaccination time differs from the default.
Workaround: Users should be advised to enter a time of vaccination whenever possible. If left blank, it will default to 12pm.
MAVIS-1827: List of vaccinator email addresses in the offline recording spreadsheet doesn’t show all nurses in the SAIS team
Some valid email addresses are missing from the vaccinator dropdown list in the offline recording spreadsheet, preventing users from selecting the correct address.
Workaround: Users should manually copy and paste their email address into the field, which overrides the dropdown options.
MAVIS-1828: Offline recording spreadsheet doesn't handle vaccination and expiry dates in YYYYMMDD format
When the spreadsheet is populated with dates in YYYYMMDD format, the system may not recognize them correctly, causing invalid or incorrect dates to be recorded.
Workaround: Users should record dates in a format that Excel recognizes (e.g. DD/MM/YYYY).
MAVIS-1831: Error displaying patient details with non-UTF-8 characters (e.g. Jalapeño-Pérez)
Patient details containing accented or special ISO-8859-1 encoded characters can cause errors when viewing records.
Workaround: Users should ensure that all cohort and class list spreadsheets are exported from Excel in CSV UTF-8 format.
MAVIS-1845: No audit log entry indicating that one record has been merged into another
When records are merged, the audit log does not currently capture or display this action, making it difficult to trace record merges.
Workaround: Users who suspect a record merge can contact the Mavis support team for confirmation.
v1.1.2
Full Changelog: v1.1.1...v1.1.2
This was released on 2025-01-17.
Bug fixes
MAVIS-1864: Child record showing wrong state when a refusal received after triage #2856 INC0269963
This fixes a bug where Mavis was showing safe to vaccinate status for a child who had a successful triage recorded, even though a subsequent refusal had been received for them.
MAVIS-1695: Fix vaccination status inconsistency where some children are "Ready for nurse" and others are "Safe to vaccinate" #2857
Previously, after successful triage the term “Safe to vaccinate” was used under triage outcome and was also the overall status of the child. This was different from the state shown for children who did not need triage, where the state was “ready for nurse”.
This change makes “Ready for nurse” the status used both when triage is not needed and after successful triage. “Safe to vaccinate” still appears under triage outcome (and in audit log as triage outcome).
Under the hood
- Update docker build step packages #2858
v1.1.1
Full Changelog: v1.1...v1.1.1
This was released on 2025-01-08.
New features
MAVIS-1723: Add flags to child records #2709 #2773 #2776
This adds a number of flags to the component when viewing a ‘child record’ allowing the nurses to see clearly if there are any flags on the patient.
After:
Invalid record
Sensitive record
Deceased patient
Bug fixes
MAVIS-1754: Fix typo on school movers confirmation screen #2711
Without the fix, the screen reads ‘Cohort record record’. Before:
MAVIS-1746: Don't link to patients out of the organisation #2724
If an cohort upload into Mavis resulted in the patient being moved to another SAIS team, the SAIS staff used to be able to see a link to the patient's record but would see an error page (due to no longer having access to that patient's record), which is not a good user experience.
Instead, Mavis no longer displays the link and provides an explanation why the patient is not available:
MAVIS-1768: Ensure notices are always visible #2726
We fixed a bug where notices were only visible if there was at least one deceased patient, and wouldn’t show if there were only restricted or invalidated patients.
MAVIS-1770: Fix notes error message on consents #2768
We fixed a bug where if you invalidate a consent, and don’t fill in the ‘Notes’ section, the error reads ‘can't be blank’ instead of ‘Enter notes.’ After:
MAVIS-1769: Show details from consent form if available #2772 #2786
The parental consent form page used to show the child info from the cohort record, not from the actual consent form itself. In the rare cases where this didn't match (i.e. if the SAIS staff matched the consent form to the wrong patient deliberately or by mistake), the true child info on the consent form wasn't being shown.
MAVIS-1771: Prevent double-recording of HPV vaccinations by navigating back #2737
When using the vaccinate flow it’s possible to inadvertently record two vaccinations for the same patient by navigating back to the confirmation after submitting it and then submitting it again.
MAVIS-1762: Improve performance on register attendance page #2769 #2770 #2781
We found during a training session that the Register attendance page sometimes loads in ~20 seconds depending on the exact data. We found low-hanging DB fixes which reduce this to under 1 second.
MAVIS-1780: Sort attendances alphabetically by default #2788
This gives the page a default sorting order.
MAVIS-1772: Hide health answers from invalidated or outdated consent responses on the consolidated view of health answers #2775
This avoids showing health answers for consents that have been invalidated or overridden by a newer consent response from the same person. The invalidated or overridden data is still available to review by clicking through to those particular consent forms, and the fact that they are invalidated is highlighted.
MAVIS-1778: Error submitting consent response when parent adds a phone number from "check and confirm" screen #2787
If a parent adds a phone number after the consent confirmation page, Mavis now prompts them to provide a contact method otherwise they're unable to submit the consent form.
MAVIS-1800: Offline spreadsheet opens with errors when many vaccinators present in the organisation #2804
Avoid Excel displaying an alert about corrupted data when an offline spreadsheet is opened by an organisation with lots of vaccinators.
MAVIS-1786: Incorrect date shown for manually matched consent response
Fixes a bug where manually matched consent response date shown on the patient page didn't match when the response was submitted by the parent.
MAVIS-1787: Filter children in a programme by status times out
Fixes Mavis performance and avoids a time out when filtering children within the HPV programme view by status.
Under the hood
- Data consistency: Validate presence of
privacy_policy_url
#2715 - Deployment: Enable docker layer caching, speeding up deployments #2741
- Performance: Don't use
not_invalidated
scope #2716 - Refactor: Pass parent relationship to AppParentSummaryComponent #2744
- Refactor: Don't create parents by default in tests #2743
- Refactor: Re-enable accessibility tests on release 1B pages #2746
- Refactor: Remove remaining explicit type from specs #2750
- Refactor: Mark JavaScript tests with :js #2751
- Refactor: Disable
:js
tests if Chrome is unavailable #2752 - Refactor: Choose an organisation on login without CIS2 #2745
- Refactor: Add hertfordshire onboarding ymls #2755
- Refactor: Fix home_educated value in model office script #2767
- Refactor: Fix flaky manage attendance feature test #2774
- Refactor: Fix time-sensitive feature test that breaks in 2025 #2805
- Refactor: Don't bulk queue PDS lookup jobs on staging envs #2785
Dependency bumps
- Bump aws-sdk-s3 from 1.176.0 to 1.176.1 #2759
- Bump caxlsx from 4.1.0 to 4.2.0 #2760
- Bump rails from 8.0.0.1 to 8.0.1 #2761
- Bump csv from 3.3.0 to 3.3.1 #2762
- Bump good_job from 4.5.1 to 4.6.0 #2763
- Bump idb from 8.0.0 to 8.0.1 #2764
- Bump @playwright/test from 1.49.0 to 1.49.1 #2765
- Bump sass from 1.82.0 to 1.83.0 #2766
- Bump aws-sdk-rds from 1.262.0 to 1.264.0 #2802
- Bump rubocop-govuk from 5.0.5 to 5.0.7 #2803
- Bump faraday from 2.12.1 to 2.12.2 #2792
- Bump esbuild from 0.24.0 to 0.24.2 #2795
- Bump capybara_accessible_selectors from aed2860 to c380ba7 #2790
New known issues
MAVIS-1812: Activity log entries for "a parent submitting consent" and "the consent being manually matched to a cohort record" are being shown as one
In cases where consent responses are manually matched to cohort records after initial submission, the Activity Log displays the matching timestamp rather than the original consent submission time. This creates misleading entries showing "consent given" instead of "records manually linked." While consent information remains accurate on the Child Record tab, users should reference that location rather than the Activity Log for correct consent timestamps. This issue is scheduled for urgent fix in the next release.
Impact: No clinical safety risk, as all consent details are correctly stored and displayed on the child's record.
Workaround: Check the Child Record tab for accurate consent submission dates and times.
v1.1.0.1
Full Changelog: v1.1...v1.1.0.1
This was a hotfix release deployed on 2024-12-16 to:
- Update our onboarding tasks
- Update the list of DFE schools
- Add an onboarding configuration for Coventry
There were no user-facing fixes or features in this release.
v1.1.0
release-1b
This was the second private beta release. It was not released to production.
release-1a
This was the first private beta release since pilot
. It was not released to production.