Skip to content

Conversation

thomasleese
Copy link
Contributor

Testing has finished and this has been approved.

TheOneFromNorway and others added 30 commits August 15, 2025 09:40
- Currently runs in tandem with good-job as it is not yet properly
  configured
- Sidekiq server type currently starts no server at all
  - Awaiting implementation in application
- We cannot use the serverless elasticache implementation because it
  runs in cluster mode which is not well supported by sidekiq
- For now we setup the elasticache with one replica in another
  availability zone for fast failover.
- elasticache permissions
- log permissions
  - needed for establishing log exporting of elasticache
- Optimal node size for cpu utilization
- Configurable replica count
- Include engine logs for deeper insight
This was in CSVImportable before, which affected immunisation imports as
well as the patient ones.
Before we were trying to replicate the entire update PDS process, but in
actuality we only need this small bit. The daily PDS updates will take
care of setting date of death, invalidated, etc.
We've added a PDS search into the import that may populate the NHS
number, so we need to auto-accept that if present. This replaces the
invalidated_at, which we aren't updating as part of the import.
This avoids the need to convert the model to a hash since it always has
the fields we need.
This ensures that if a triage doesn't exist an error won't be raised and
instead we'll get content without the nurse.
We don't want it to show "in programme" as it implies across all the
years.
This supports the new ProcessChangesetsJob that only looks up NHS numbers
for patients not uploaded with NHS numbers, and gets rid of PDS find.
These tests check for creating a new patient not uploaded with an NHS number, but has found one through PDS.
And not doing any PDS lookups when uploaded with an NHS number.
Small improvements to vaccination programmes table
Complete implementation of valkey with a connected sidekiq service
This installs the Gems necessary to start migrating our background jobs
to run using Sidekiq.
To NHSAPIConcurrencyConcernGoodJob to make it clear that this is
configuration only for good job.
We need to ensure that when Sidekiq runs it doesn't hit concurrency
limits on database connections.
This adds the configuration necessary to run Sidekiq.
This configures the `docker-start` script to run Sidekiq.
In Sidekiq we need all the PDS jobs to run on the same queue.
We will let Sidekiq and Sidekiq Throttled handle this for us.
This updates the PDS jobs to use Sidekiq as their queue adapter rather
than Good Job as we think the performance will be better.
One is used for PDS and the other is used for the Immunisations API.
This is password protected using the same basic auth mechanism that we
had in place for Good Job.
This class is going to use `StatusGenerator::Consent` in a future commit
and the programme object is needed for that.
This class is going to use `StatusGenerator::Consent` in a future commit
and the patient object is needed for that.
This updates the `StatusGenerator::Session` class to use the
`StatusGenerator::Consent` class instead of duplicating the code used to
calculate whether the consent status is a refusal.
This ensures that when consent is in the conflicting status, the session
outcome is set to conflicting. This was a missing session outcome from
the design.
This have now been run in production so we can safely remove them.
This code is going to be deployed after the 18th, which means the
preparation period is already in production so we can reset this to the
normal preparation period length.

Closes #1943
thomasleese and others added 20 commits August 18, 2025 09:48
To `serviceworker.rake` to match the convention of naming the file over
the namespace.
The `app/lib` directory is where we store miscellaneous Ruby classes
that are related to the application.
This replaces the Rake task to view the access log with a CLI command
meaning it can be more easily used and tested.
This replaces the Rake task to generate consent forms with a CLI
command meaning it can be more easily used and tested.
This replaces the Rake task to import GP practices with a CLI command
meaning it can be more easily used and tested.
This replaces the Rake task to generate an access token for the NHS
API with a CLI command meaning it can be more easily used and tested.
This replaces the Rake task to get and search for patients in PDS with
a CLI command meaning it can be more easily used and tested.
This replaces the Rake task to move patients between schools with a
CLI command meaning it can be more easily used and tested.
This replaces the Rake task to create a new subteam with a CLI command
meaning it can be more easily used and tested.
This replaces the Rake task to create a new user with a CLI command
meaning it can be more easily used and tested.
In to a single Rake task since it will always get used together.
Convert remaining Rake tasks to CLI commands
In the case two parents are uplaoded with the same email in a csv file, and one parent already exists in the database with
that email, then we get a duplicate import conflict. This deduplicates the parents before importing.
Deduplicate parents before importing changesets
This fixes a flaky test by looking up patient records explicitly by
their unique identifier rather than relying on the ordering being
consistent (which cannot be relied on).
Nurses and Healthcare Assistants (HCAs) found that the "donuts
and diamonds" significantly helped them understand what vaccination
method (e.g., nasal or injection) was needed for a particular child.

The icon will show up on the "Vaccination method" row and also on the
record vaccination page.
@thomasleese thomasleese requested review from a team as code owners August 18, 2025 16:19
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
7 Security Hotspots

See analysis details on SonarQube Cloud

@thomasleese thomasleese merged commit 906e02e into main Aug 18, 2025
37 of 39 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.

6 participants