diff --git a/app/src/pages/downloadCompletePage/DownloadCompletePage.test.tsx b/app/src/pages/downloadCompletePage/DownloadCompletePage.test.tsx
new file mode 100644
index 000000000..5cafb7253
--- /dev/null
+++ b/app/src/pages/downloadCompletePage/DownloadCompletePage.test.tsx
@@ -0,0 +1,70 @@
+import { buildPatientDetails } from '../../helpers/test/testBuilders';
+import { render, screen } from '@testing-library/react';
+import { runAxeTest } from '../../helpers/test/axeTestHelper';
+import { afterEach, beforeEach, describe, expect, it, vi, Mock } from 'vitest';
+import DownloadCompletePage from './DownloadCompletePage';
+import userEvent from '@testing-library/user-event';
+import { routes } from '../../types/generic/routes';
+import usePatient from '../../helpers/hooks/usePatient';
+
+vi.mock('../../helpers/hooks/usePatient');
+
+const mockedUseNavigate = vi.fn();
+const mockUsePatient = usePatient as Mock;
+
+vi.mock('react-router-dom', () => ({
+ useNavigate: () => mockedUseNavigate,
+}));
+
+describe('DownloadCompletePage', () => {
+ const mockPatient = buildPatientDetails();
+
+ beforeEach(() => {
+ import.meta.env.VITE_ENVIRONMENT = 'vitest';
+ mockUsePatient.mockReturnValue(mockPatient);
+ });
+ afterEach(() => {
+ vi.clearAllMocks();
+ });
+
+ it('renders the download complete screen', () => {
+ render();
+
+ expect(screen.getByTestId('page-title')).toBeInTheDocument();
+ expect(
+ screen.getByText(`Patient name: ${mockPatient.familyName}, ${mockPatient.givenName}`),
+ ).toBeInTheDocument();
+ expect(screen.getByText('Your responsibilities with this record')).toBeInTheDocument();
+ expect(
+ screen.getByText('Follow the Record Management Code of Practice'),
+ ).toBeInTheDocument();
+ expect(
+ screen.getByRole('button', {
+ name: 'Go to home',
+ }),
+ ).toBeInTheDocument();
+ });
+
+ it('navigates to the home screen when go to home is clicked', async () => {
+ render();
+
+ await userEvent.click(screen.getByRole('button', {name: 'Go to home'}));
+
+ expect(mockedUseNavigate).toHaveBeenCalledWith(routes.HOME);
+ });
+
+ it('navigates to the home screen if patient details are undefined', async () => {
+ mockUsePatient.mockReturnValue(undefined);
+ render();
+
+ expect(mockedUseNavigate).toHaveBeenCalledWith(routes.HOME);
+ });
+
+ describe('Accessibility', () => {
+ it('passes accessibility checks', async () => {
+ render();
+ const results = await runAxeTest(document.body);
+ expect(results).toHaveNoViolations();
+ });
+ });
+});
diff --git a/app/src/pages/downloadCompletePage/DownloadCompletePage.tsx b/app/src/pages/downloadCompletePage/DownloadCompletePage.tsx
new file mode 100644
index 000000000..a0f3668d5
--- /dev/null
+++ b/app/src/pages/downloadCompletePage/DownloadCompletePage.tsx
@@ -0,0 +1,68 @@
+import React from 'react';
+import { Button } from 'nhsuk-react-components';
+import useTitle from '../../helpers/hooks/useTitle';
+import { useNavigate } from 'react-router-dom';
+import { routes } from '../../types/generic/routes';
+import usePatient from '../../helpers/hooks/usePatient';
+import { formatNhsNumber } from '../../helpers/utils/formatNhsNumber';
+import { getFormattedDateFromString } from '../../helpers/utils/formatDate';
+import { getFormattedPatientFullName } from '../../helpers/utils/formatPatientFullName';
+
+const DownloadCompletePage = (): React.JSX.Element => {
+ const navigate = useNavigate();
+ const patient = usePatient();
+
+ const pageHeader = 'Download complete';
+ useTitle({ pageTitle: pageHeader });
+
+ if (!patient) {
+ navigate(routes.HOME);
+ return <>>;
+ }
+
+ return (
+
+
+
+ Download complete
+
+
+
+ Patient name: {getFormattedPatientFullName(patient)}
+
+ NHS number: {formatNhsNumber(patient.nhsNumber)}
+
+ Date of birth: {getFormattedDateFromString(patient.birthDate)}
+
+
+
+
Your responsibilities with this record
+
+ Everyone in a health and care organisation is responsible for managing records
+ appropriately. It is important all general practice staff understand their
+ responsibilities for creating, maintaining, and disposing of records appropriately.
+
+
+
Follow the Record Management Code of Practice
+
+ The{' '}
+
+ Record Management Code of Practice
+ {' '}
+ provides a framework for consistent and effective records management, based on
+ established standards.
+