Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
6b6177b
[PRM-667] Removal of dojo file to allow PR to be created to run checks
oliverbeumkes-nhs Jan 21, 2026
fba6d93
[PRM-667] Fixed failing tests and updated axios and supertest
oliverbeumkes-nhs Jan 23, 2026
0c33e42
Updated express-validator to 7.3.1 and updated syntax on validation.j…
oliverbeumkes-nhs Jan 23, 2026
2bae689
Updated eslint and prettier
oliverbeumkes-nhs Jan 23, 2026
86acb78
Updated express, babel, jest and nock
oliverbeumkes-nhs Jan 23, 2026
4ee36de
Updated remaining ehr-out packages
oliverbeumkes-nhs Jan 23, 2026
b303765
Removed remaining dojo from ehr-out and updated README a bit
oliverbeumkes-nhs Jan 23, 2026
9104c9f
Ehr-repo updated tests to point they are all passing
oliverbeumkes-nhs Jan 23, 2026
9ce00b2
Updated ehr-repo packages
oliverbeumkes-nhs Jan 23, 2026
8223688
Migrated eslint config to new eslint.config.mjs format and installed …
oliverbeumkes-nhs Jan 23, 2026
9b2fd49
Ignore empty catch eslint ehr-out
oliverbeumkes-nhs Jan 23, 2026
872f8f9
Log error instead of doing nothing
oliverbeumkes-nhs Jan 23, 2026
d5ad4be
Added setup files to test ehr-out
oliverbeumkes-nhs Jan 23, 2026
067f643
updated eslint version
oliverbeumkes-nhs Jan 26, 2026
f116495
removed unused performance and docker tests
oliverbeumkes-nhs Jan 26, 2026
808783f
removed unused performance and docker tests
oliverbeumkes-nhs Jan 26, 2026
9c8304a
Updated gp2gp messengers deps to remove all warning
oliverbeumkes-nhs Jan 26, 2026
023fe45
Updated SonarQube provider in action
oliverbeumkes-nhs Jan 29, 2026
650ef8c
Merge remote-tracking branch 'origin' into PRM-667
oliverbeumkes-nhs Jan 29, 2026
b3cb9d0
removed ehr-repo/tests as no longer exists
oliverbeumkes-nhs Jan 29, 2026
dafb81a
Temp tag to test infra changes
oliverbeumkes-nhs Jan 29, 2026
db5a8e2
Updated gp2gp messenger packages
oliverbeumkes-nhs Feb 11, 2026
b5b6191
renamed run_localstack_local to start_localstack
oliverbeumkes-nhs Feb 11, 2026
3d21a15
reordered the localstack start and destroy in test commands
oliverbeumkes-nhs Feb 11, 2026
e3ac1de
Fixed ehr out service tests
oliverbeumkes-nhs Feb 11, 2026
6323666
Retagged deploy stack to v3 and removed redundant info from ehr out R…
oliverbeumkes-nhs Feb 13, 2026
0b8df08
Ran npm audit fix
oliverbeumkes-nhs Feb 13, 2026
2a9bdea
[PRM-659] GitHub Org migration changes (nhsconnect -> NHSDigital) (#289)
chrisbloe Feb 16, 2026
0c4cab3
Audited all node packages again
oliverbeumkes-nhs Mar 3, 2026
ba9d4a6
Merge branch 'main' into PRM-667
chrisbloe Mar 4, 2026
b45322b
Use the new tag input
chrisbloe Mar 12, 2026
4b62394
Upgrade Node to 24
oliverbeumkes-nhs Mar 12, 2026
20ab1ea
Action version upgrades
chrisbloe Mar 13, 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
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @NHSDigital/patient-record-management
4 changes: 2 additions & 2 deletions .github/workflows/automated-sbom-repo-scan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
name: SBOM Repo Scan
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis

Expand All @@ -35,7 +35,7 @@ jobs:
output-format: sarif

- name: Upload Anchore scan SARIF report
uses: github/codeql-action/upload-sarif@v3
uses: github/codeql-action/upload-sarif@v4
if: always()
with:
sarif_file: ${{ steps.sbom-scan.outputs.sarif }}
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/base-java-service-jobs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,10 @@ jobs:
working-directory: "./services/${{ inputs.service }}"
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Set up JDK ${{ inputs.java_version }}
uses: actions/setup-java@v3
uses: actions/setup-java@v5
with:
distribution: "temurin"
java-version: "${{ inputs.java_version }}"
Expand All @@ -73,17 +73,17 @@ jobs:
working-directory: "./services/${{ inputs.service }}"
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Set up JDK ${{ inputs.java_version }}
uses: actions/setup-java@v3
uses: actions/setup-java@v5
with:
distribution: "temurin"
java-version: "${{ inputs.java_version }}"
cache: gradle

- name: Configure AWS Credentials (Read/Write)
uses: aws-actions/configure-aws-credentials@v4
uses: aws-actions/configure-aws-credentials@v6
with:
role-to-assume: ${{ secrets.IAM_ROLE }}
aws-region: ${{ vars.AWS_REGION }}
Expand Down Expand Up @@ -137,11 +137,11 @@ jobs:
deploy_infra:
name: Deploy Infrastructure
needs: [build_and_publish]
uses: nhsconnect/orphaned-record-continuity-infrastructure/.github/workflows/deploy-stack.yml@v3

uses: NHSDigital/orphaned-record-continuity-infrastructure/.github/workflows/deploy-stack.yml@v3
with:
stack: ${{ inputs.service }}
environment: ${{ inputs.environment }}
is_deployment: ${{ inputs.is_deployment }}
ecr_alias: ${{ inputs.ecr_alias }}
git_ref: refs/tags/v3
secrets: inherit
21 changes: 12 additions & 9 deletions .github/workflows/base-node-service-jobs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,19 +44,19 @@ jobs:
id: extract_branch

- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Set up Node
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24

- name: Install dependencies
working-directory: ./services/${{ inputs.service }}
run: npm install

- name: Start LocalStack
uses: LocalStack/setup-localstack@v0.2.4
uses: LocalStack/setup-localstack@v0.2.5
with:
install-awslocal: "true"

Expand Down Expand Up @@ -106,16 +106,18 @@ jobs:
working-directory: "./services/${{ inputs.service }}"
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Set up Node
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24

- name: Install dependencies
run: npm install

- name: Configure AWS Credentials (Read/Write)
uses: aws-actions/configure-aws-credentials@v4
uses: aws-actions/configure-aws-credentials@v6
with:
role-to-assume: ${{ secrets.IAM_ROLE }}
aws-region: ${{ vars.AWS_REGION }}
Expand Down Expand Up @@ -169,10 +171,11 @@ jobs:
deploy_infra:
name: Deploy Infrastructure
needs: [build_and_publish]
uses: nhsconnect/orphaned-record-continuity-infrastructure/.github/workflows/deploy-stack.yml@v3
uses: NHSDigital/orphaned-record-continuity-infrastructure/.github/workflows/deploy-stack.yml@v3
with:
stack: ${{ inputs.service }}
environment: ${{ inputs.environment }}
is_deployment: ${{ inputs.is_deployment }}
ecr_alias: ${{ inputs.ecr_alias }}
git_ref: refs/tags/v3
secrets: inherit
13 changes: 7 additions & 6 deletions .github/workflows/base-python-service-jobs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ jobs:
working-directory: "./services/${{ inputs.service }}"
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: 3.9
- name: Run Unit tests
Expand All @@ -54,16 +54,16 @@ jobs:
run:
working-directory: ./services/${{ inputs.service }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Set up Python 3.9
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: 3.9

- name: Configure AWS credentials
id: auth
uses: aws-actions/configure-aws-credentials@v4
uses: aws-actions/configure-aws-credentials@v6
with:
mask-aws-account-id: true
role-to-assume: ${{ secrets.IAM_ROLE }}
Expand Down Expand Up @@ -120,10 +120,11 @@ jobs:
if: ${{ inputs.deploy_infra && inputs.is_deployment }}
name: Deploy Infrastructure
needs: [build-and-publish-service]
uses: nhsconnect/orphaned-record-continuity-infrastructure/.github/workflows/deploy-stack.yml@v3
uses: NHSDigital/orphaned-record-continuity-infrastructure/.github/workflows/deploy-stack.yml@v3
with:
stack: ${{ inputs.service }}
environment: ${{ inputs.environment }}
is_deployment: ${{ inputs.is_deployment }}
ecr_alias: ${{ inputs.ecr_alias }}
git_ref: refs/tags/v3
secrets: inherit
13 changes: 8 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,31 +1,34 @@
name: Build

on:
push:
branches:
- main

pull_request:
types: [opened, synchronize, reopened]

jobs:
sonarcloud:
name: SonarCloud
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis

- name: Use Node.js 22.x
uses: actions/setup-node@v3
- name: Use Node.js 24.x
uses: actions/setup-node@v6
with:
node-version: 22.x
node-version: 24.x

- name: Run test coverage
run: |
cd ./services/ehr-repo
./tasks test_coverage-github-action

- name: SonarCloud Scan
uses: SonarSource/sonarqube-scan-action@v4
uses: SonarSource/sonarqube-scan-action@v7
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
4 changes: 2 additions & 2 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ jobs:

steps:
- name: Checkout End to End
uses: actions/checkout@v5
uses: actions/checkout@v6
with:
repository: "nhsconnect/prm-repo-e2e-tests"

- name: Setup Java
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
distribution: "adopt"
java-version: "21"
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/service-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,15 @@ jobs:
changed: ${{ steps.get_changes.outputs.changed }}
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Get Changes
id: get_changes
run: |
git fetch origin ${{ github.event.pull_request.base.ref }}
changed=$(git diff --name-only origin/${{ github.event.pull_request.base.ref }}...HEAD | tr '\n' ' ')
git fetch origin main
changed=$(git diff --name-only origin/main... | tr '\n' ' ')
echo "changed=$changed" >> $GITHUB_OUTPUT

ehr-repo:
Expand Down
27 changes: 27 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Welcome to the Orphaned Record Continuity contributors guide

Thank you for your interest in improving the codebase.

In this guide you will get an overview of the contribution workflow from creating a PR, reviewing, and merging the PR.

The codebase covers:

- The [Orphaned Record Continuity service](https://digital.nhs.uk/services/orphaned-record-continuity).

To raise an issue, please contact one of the [CODEOWNERS](.github/CODEOWNERS) directly, or raise a PR.

If you're new to GitHub and/or Markdown, GitHub's own [contributor's guide](https://github.com/github/docs/blob/main/.github/CONTRIBUTING.md) provides good signposting on these topics.

## Pull requests and merging

You can't push to the main branch. Therefore, for all changes you will need to create a new branch, and then a pull request to merge said branch into `main`. The [CODEOWNERS](.github/CODEOWNERS) will be nominated as reviewers of your PR by default, but feel free to add other people as well if you think they will have valuable input.

## Contributing guidelines and etiquette

- Preview your Markdown code to make sure the format is not broken.
- Check grammar, spelling and punctuation - no-one wants to look pedantic by requesting changes due to typos or inconsistent grammar/syntax, but it's only fair to keep this tidy.
- The codebase is open to the world. This has a few implications:
- Nothing in it should be confidential, private to NHSE or include any personal data.
- All links should be public.
- Consider comments and README.md text: comments in open source repos such as this are not official communications and don't go through the normal approval process for public communication. They can however still be interpreted as official communication, even if not intended as such.
- Use [inclusive language](https://github.com/NHSDigital/software-engineering-quality-framework/blob/main/inclusive-language.md): avoid terms which cause hurt and offence, including if they have historically been considered industry-standard terms.
12 changes: 0 additions & 12 deletions services/ehr-out-service/.talismanrc

This file was deleted.

29 changes: 0 additions & 29 deletions services/ehr-out-service/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
This component is part of the Repository, responsible for creating and handling of EHR transfers out from the Repository,
when the Orphaned/Stranded health record stored in the Repository's `ehr-repository` is requested by the next registering
practice.

When the a GP2GP EHR request on its incoming queue, the `ehr-out-service` accepts this and creates a record to track this outward transfer.
After the successful validation of the request and retrieval of patient's health record from `ehr-repository`, it sends the
EHR out to the requesting practice via `gp2gp-messenger`.
Expand All @@ -16,28 +15,8 @@ Follow the links to download
- [Node](https://nodejs.org/en/download/package-manager/#nvm) - version 14.x
- [Docker](https://docs.docker.com/install/)

### AWS helpers

This repository imports shared AWS helpers from [prm-deductions-support-infra](https://github.com/nhsconnect/prm-deductions-support-infra/).
They can be found `utils` directory after running any task from `tasks` file.

## Directories

| Directory | Description |
| :---------------- |:--------------------------------------------------|
| /test/docker | Contains smoke test for docker |
| /test/functional | Contains tests against deployed service |
| /gocd | Contains the GoCD pipeline files |
| /src | The source code |
| /terraform | Terraform to deploy app as a Fargate task in AWS |
| /scripts | Useful scripts (e.g. for sending canary messages) |
| /utils | Contains aws-helpers |

## Starting the app locally

*BEWARE be sure what you're doing here as `node_modules` can contain platform-specific files e.g. mac vs linux/amd64 not
necessarily compatible*

1. Run `npm install` to install all node dependencies.
2. Configure local environment variables:
- run `./tasks setup_test_integration_local`
Expand Down Expand Up @@ -77,14 +56,6 @@ Run `./tasks test_integration` to run integration tests.
Runs the coverage tests (unit test and integration test) and collects coverage metrics.
Run `./tasks test_coverage` to run coverage tests.

### Local Docker tests

Run `./tasks test_docker_local`. Make sure you have followed the steps to start the app in production mode beforehand.

### Functional tests

Run `./tasks test_functional`. This will run the end to end tests within [./test/functional](./test/functional). (Note you may need to be connected to VPN).

## Pre-commit Checks

Before committing, ensure you run the following tests:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,11 @@ services:
volumes:
- "/var/lib/localstack:/var/lib/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
links:
- dynamodb-local:dynamodb-local
dynamodb-local:
network_mode: bridge
image: amazon/dynamodb-local
command: "-jar DynamoDBLocal.jar -sharedDb -inMemory"
ports:
- "4573:8000"
37 changes: 37 additions & 0 deletions services/ehr-out-service/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { defineConfig } from "eslint/config";
import prettier from "eslint-plugin-prettier";
import globals from "globals";
import path from "node:path";
import { fileURLToPath } from "node:url";
import js from "@eslint/js";
import { FlatCompat } from "@eslint/eslintrc";

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all
});

export default defineConfig([{
extends: compat.extends("eslint:recommended", "prettier"),

plugins: {
prettier,
},

languageOptions: {
globals: {
...globals.node,
...globals.jest,
},

ecmaVersion: 2020,
sourceType: "module",
},

rules: {
"prettier/prettier": "error",
},
}]);
Loading
Loading