Skip to content

v8.2.0#6709

Merged
thomasleese merged 69 commits intomainfrom
next
Apr 27, 2026
Merged

v8.2.0#6709
thomasleese merged 69 commits intomainfrom
next

Conversation

@misaka
Copy link
Copy Markdown
Collaborator

@misaka misaka commented Apr 27, 2026

No description provided.

murugapl and others added 30 commits April 20, 2026 16:04
Archive and patient merge events are not specific to any programme, so they shouldn't appear on every programme tab. Extract them into a new AppPatientActivityComponent ("Activity log" card) rendered on the Child record tab instead.
* Enqueue job runs once a day
* Triggers automated exports for all relevant teams
* Uses extracted Careplus::AutomatedReportSender


Jira-Issue: MAV-6232
Show programme-specific dose sequence guidance when the uploaded
value is not a valid integer, so MMR now correctly says the maximum
dose sequence is 2 and gives examples of 1 or 2 instead of the
generic 1, 2 or 3 message.

Jira-Issue: MAV-2312
* We still want to show this in the UI

Jira-Issue: MAV-6232
After adding "cascade on delete" to these `Patient`
FK relationships, we need to validate them.

We can't do this as part of the same migration because it's likely to
cause a long table lock, which is unacceptable in production. Hence,
this needs to be included in the subsequent release.

Jira-Issue: MAV-7065
The `patient_locations` association on `Patient::ProgrammeStatus`
already defines the includes that are needed to successfully generate a
status, therefore we don't need to define these again in the
`PatientStatusUpdater`.

This follows the same pattern we use for the other associations (for
example `consents`).
This adds API keys and secrets for our staging and production
environments giving us access to the Ordnance Survey Places API.

We'll be using this API in the future to attach geographical positions
to locations and allow users to find a suitable location near them.

Jira-Issue: MAV-6379
Jira-Issue: MAV-6740
This adds a Ruby wrapper to the OS Places API and a simple Rake task
that can be used to smoke test the integration.

This will be used in the future to support fetching the latitude and
longitude position of locations.

Jira-Issue: MAV-6379
Jira-Issue: MAV-6740
It keeps things simpler if most of our dependencies are managed using
the same tool (Mise).

Jira-Issue: MAV-6379
Jira-Issue: MAV-6706
This is necessary to be able to use Yamllint.

Jira-Issue: MAV-6379
Jira-Issue: MAV-6706
This ensures that when importing patients via the the immunisation
import, if not matched with an existing patient, we create a new one.
These new patients were being assigned a `local_authority_mhclg_code`
meaning that when later imported via a cohort or class list, they appear
to have an import issue.

Jira-Issue: MAV-5740
There are a number of patients in an invalid state due to the fact that
we previously didn't set `local_authority_mhclg_code` when importing due
to immunisation imports.

Jira-Issue: MAV-5740
This allows it to run one more time after deployment to ensure we catch
any patients who may be missing a value.

Jira-Issue: MAV-5740
This explains how to install the dependencies for the service using
Homebrew on macOS and Debian-based Linux distributions.

Co-Authored-By: Chris Roos <chris@seagul.co.uk>
Jira-Issue: MAV-6379
Jira-Issue: MAV-6706
We're going to change to recommend install PostgreSQL and Redis from
system packages rather than Mise as it causes problems building these
manually, particularly with PostGIS.

Jira-Issue: MAV-6379
Jira-Issue: MAV-6706
This allows the application to connect to the database over a Unix
socket, and is also no longer needed by CI.

Jira-Issue: MAV-6379
Jira-Issue: MAV-6706
This adapter allows us to take advantage of features of PostGIS which we
can use for spatial querying.

Jira-Issue: MAV-6379
Jira-Issue: MAV-6706
To be able to run the tests against a version of PostgreSQL that
supports PostGIS.

I've also renamed a few of the jobs and steps to make them clearer
what they do.

Jira-Issue: MAV-6379
Jira-Issue: MAV-6706
This ensures that the PostGIS extension is enabled, allowing us to use
features such as spatial queries and point columns.

Jira-Issue: MAV-6379
Jira-Issue: MAV-6706
This adds a new spatial point column named position to the locations
table. We will populate this column with longitude and latitude
coordinates of each location, to support future work related to users
being able to search for their nearest clinic to book in to.

Jira-Issue: MAV-6379
Jira-Issue: MAV-6707
Change the wording of the email sent to parents confirming that they have consented and that triage is needed.
The new wording removes the implication that the parent will be contacted under all circumstances.
Mirror the DB-layer guarantee (column becomes NOT NULL in the
following commit) with a model-layer validation. The factory now
derives purpose from its chosen template_id so existing specs
continue to build valid records by default.

Jira-Issue: MAV-6739
Each template file now carries its own purpose symbol (matching the
NotifyLogEntry.purposes enum) next to template_id. This is data only —
nothing reads it yet. The following commit wires NotifyTemplate to
surface the field; the commit after replaces the substring dispatcher
in NotifyLogEntry with the template-declared value.

Jira-Issue: MAV-6739
Keeps this historical migration self-contained and runnable if
replayed after NotifyLogEntry.purpose_for_template_name is removed
in the following commit.

Jira-Issue: MAV-6739
Delivery jobs now record `purpose: template.purpose` when creating a
NotifyLogEntry. NotifyLogEntry.purpose_for_template_name and its
spec go away.

Jira-Issue: MAV-6739
…cludes

Remove unnecessary includes in `PatientStatusUpdater`
…-set-on-import

Ensure local authority is set on new patients after immunisation import
Add Ordnance Survey API keys and secrets
dependabot Bot and others added 25 commits April 23, 2026 21:56
Bumps [aws-sdk-cloudwatch](https://github.com/aws/aws-sdk-ruby) from 1.133.0 to 1.134.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-cloudwatch/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-cloudwatch
  dependency-version: 1.134.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [rubocop-govuk](https://github.com/alphagov/rubocop-govuk) from 5.2.0 to 5.2.1.
- [Changelog](https://github.com/alphagov/rubocop-govuk/blob/main/CHANGELOG.md)
- [Commits](alphagov/rubocop-govuk@v5.2.0...v5.2.1)

---
updated-dependencies:
- dependency-name: rubocop-govuk
  dependency-version: 5.2.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…cop-govuk-5.2.1

Bump rubocop-govuk from 5.2.0 to 5.2.1
…delete-validate

Validate new `Patient` foreign key relationships
…-export

Add sidekiq job for careplus export
This adds a security disclosure document based on the NHS software
engineering quality framework template.
This simplifies the Sidekiq Scheduler configuration by using the job
names as the schedule names. This simple refactor should make it easier
to change this configuration in the future without needing to keep the
job names and schedule names in sync.

Sidekiq Scheduler will automatically use the schedule name as the job
class if it's not otherwise specified.

Jira-Issue: MAV-7107
Teams can now see why parents refused consent (personal choice, gelatine
concern, etc.) and how consent was submitted (website, phone, paper).
Bumps [propshaft](https://github.com/rails/propshaft) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/rails/propshaft/releases)
- [Commits](rails/propshaft@v1.3.1...v1.3.2)

---
updated-dependencies:
- dependency-name: propshaft
  dependency-version: 1.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Add consent refusal reason and route breakdowns
Bumps the bundler group with 1 update in the / directory: [erb](https://github.com/ruby/erb).


Updates `erb` from 6.0.3 to 6.0.4
- [Release notes](https://github.com/ruby/erb/releases)
- [Changelog](https://github.com/ruby/erb/blob/master/NEWS.md)
- [Commits](ruby/erb@v6.0.3...v6.0.4)

---
updated-dependencies:
- dependency-name: erb
  dependency-version: 6.0.4
  dependency-type: indirect
  dependency-group: bundler
...

Signed-off-by: dependabot[bot] <support@github.com>
…shaft-1.3.2

Bump propshaft from 1.3.1 to 1.3.2
…77e969a7b

Bump erb from 6.0.3 to 6.0.4 in the bundler group across 1 directory
Allow end-to-end tests to trigger `EnqueueVaccinationsSearchInNHSJob`
directly rather than through the Sidekiq Scheduler's `/sidekiq/recurring-jobs/{name}`
URL.

Mirrors the existing `reporting_refresh` controller: `?wait=true` runs
`perform_now` and returns 200, otherwise enqueues with `perform_later`
and returns 202. Inherits the `:testing_api` Flipper / local-env gate
from `API::Testing::BaseController`.
…rch-job

Add testing API endpoint to enqueue vaccinations search in NHS
…ng-careplus-url

Ensure more descriptive error appears when URL for mock careplus service isn't set
…eporting

Include withdrawn consents in consent reporting breakdowns
@misaka misaka requested a review from a team as a code owner April 27, 2026 14:38
@thomasleese thomasleese merged commit 5c39c85 into main Apr 27, 2026
104 of 114 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants