Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ describe('GP Workflow: Download Lloyd George summary report', () => {

cy.url().should(
'eq',
Cypress.config('baseUrl') + `${routes.createReportComplete}?reportType=0`,
Cypress.config('baseUrl') + `${routes.createReportComplete}?reportType=PATIENT`,
);
},
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ describe('GP Workflow: Download Lloyd George summary report', () => {

cy.url().should(
'eq',
Cypress.config('baseUrl') + `${routes.createReportComplete}?reportType=0`,
Cypress.config('baseUrl') + `${routes.createReportComplete}?reportType=PATIENT`,
);

cy.getByTestId('logout-btn').click();
Expand Down
2 changes: 1 addition & 1 deletion app/cypress/support/e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ Cypress.Commands.add('navigateToDownloadReportPage', () => {
cy.getByTestId('download-report-btn').should('exist');
cy.getByTestId('download-report-btn').click();

cy.url().should('eq', baseUrl + `${routes.createReport}?reportType=0`);
cy.url().should('eq', baseUrl + `${routes.createReport}?reportType=PATIENT`);
});

declare global {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -721,6 +721,20 @@ describe('ReviewsPage', () => {
});
});

describe('Report Download Link', () => {
it('renders download report link with correct href', async () => {
renderComponent();

await waitFor(() => {
expect(screen.getByText('900 000 0001')).toBeInTheDocument();
});

const downloadLink = screen.getByText('Download a report on this data');
expect(downloadLink).toBeInTheDocument();
expect(downloadLink).toHaveAttribute('href', '/create-report?reportType=REVIEW');
});
});

describe('Multiple Reviews', () => {
it('renders all review items correctly', async () => {
const multipleReviewsResponse: ReviewsResponse = {
Expand Down
11 changes: 10 additions & 1 deletion app/src/components/blocks/_admin/reviewsPage/ReviewsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import SpinnerButton from '../../../generic/spinnerButton/SpinnerButton';
import SpinnerV2 from '../../../generic/spinnerV2/SpinnerV2';
import { usePatientDetailsContext } from '../../../../providers/patientProvider/PatientProvider';
import { getConfigForDocType } from '../../../../helpers/utils/documentType';
import { REPORT_TYPE } from '../../../../types/generic/reports';

export const ReviewsPage = (): React.JSX.Element => {
useTitle({ pageTitle: 'Admin - Reviews' });
Expand Down Expand Up @@ -108,7 +109,8 @@ export const ReviewsPage = (): React.JSX.Element => {
return {
id: dto.id,
nhsNumber,
recordType: getConfigForDocType(dto.document_snomed_code_type).content.reviewList as string,
recordType: getConfigForDocType(dto.document_snomed_code_type).content
.reviewList as string,
snomedCode: dto.document_snomed_code_type,
uploader: dto.odsCode,
dateUploaded: dto.dateUploaded,
Expand Down Expand Up @@ -164,6 +166,13 @@ export const ReviewsPage = (): React.JSX.Element => {
</p>

<Table.Panel heading="Documents to review" className="reviews-page" allowFullScreen>
<div className="mb-3" style={{ textAlign: 'right' }}>
<a
href={`${routes.REPORT_DOWNLOAD}?reportType=${REPORT_TYPE.ODS_REVIEW_SUMMARY}`}
>
Download a report on this data
</a>
</div>
{/* Search box */}
<form
id="search-form"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,12 @@ const DownloadReportSelectStage = (props: Props): JSX.Element => {
setDownloading(true);

try {
await downloadReport({ report: props.report, fileType, baseUrl, baseHeaders });
await downloadReport({
report: props.report,
fileType,
baseUrl,
baseHeaders,
});
handleSuccess();
} catch (e) {
const error = e as AxiosError;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
const ReviewSummaryDescription = (): React.JSX.Element => {
return (
<>
<p>This report contains:</p>
<ul className="ml-3">
<li>
the details of pending document records stored within this service for your
organisation
</li>
</ul>
</>
);
};

export default ReviewSummaryDescription;
9 changes: 5 additions & 4 deletions app/src/helpers/requests/downloadReport.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import axios, { AxiosError } from 'axios';
import downloadReport from './downloadReport';
import { ReportData } from '../../types/generic/reports';
import { REPORT_TYPE, ReportData } from '../../types/generic/reports';
import { AuthHeaders } from '../../types/blocks/authHeaders';
import { describe, expect, it, vi, Mocked, beforeEach, afterEach, Mock } from 'vitest';
import { afterEach, beforeEach, describe, expect, it, Mock, Mocked, vi } from 'vitest';
import { Procedure } from '@vitest/spy';

vi.mock('axios');
Expand All @@ -12,6 +12,7 @@ const mockedAxios = axios as Mocked<typeof axios>;
describe('downloadReport', () => {
const report = {
endpoint: '/download',
reportType: REPORT_TYPE.ODS_REVIEW_SUMMARY,
} as ReportData;

let clickSpy: Mock<Procedure>;
Expand Down Expand Up @@ -55,7 +56,7 @@ describe('downloadReport', () => {

expect(getSpy).toHaveBeenCalledWith(args.baseUrl + report.endpoint, {
headers: args.baseHeaders,
params: { outputFileFormat: args.fileType, odsReportType: 'PATIENT' },
params: { outputFileFormat: args.fileType, odsReportType: 'REVIEW' },
});

expect(mockAnchor.setAttribute).toHaveBeenCalledWith('download', '');
Expand Down Expand Up @@ -90,7 +91,7 @@ describe('downloadReport', () => {
expect(errorCode).toBe(404);
expect(getSpy).toHaveBeenCalledWith(args.baseUrl + report.endpoint, {
headers: args.baseHeaders,
params: { outputFileFormat: args.fileType, odsReportType: 'PATIENT' },
params: { outputFileFormat: args.fileType, odsReportType: 'REVIEW' },
});
});
});
3 changes: 1 addition & 2 deletions app/src/helpers/requests/downloadReport.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ type Args = {
type DownloadReportResponseData = {
data: { url: string };
};

const downloadReport = async ({ report, fileType, baseUrl, baseHeaders }: Args): Promise<void> => {
const gatewayUrl = baseUrl + report.endpoint;

Expand All @@ -23,7 +22,7 @@ const downloadReport = async ({ report, fileType, baseUrl, baseHeaders }: Args):
},
params: {
outputFileFormat: fileType,
odsReportType: 'PATIENT',
odsReportType: report.reportType,
},
});

Expand Down
11 changes: 10 additions & 1 deletion app/src/types/generic/reports.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import LloydGeorgeSummaryDescription from '../../components/blocks/_downloadReport/downloadReportSelectStage/ReportDescriptions/LloydGeorgeSummaryDescription';
import { endpoints } from './endpoints';
import ReviewSummaryDescription from '../../components/blocks/_downloadReport/downloadReportSelectStage/ReportDescriptions/ReviewSummaryDescription';

export enum REPORT_TYPE {
ODS_PATIENT_SUMMARY = '0',
ODS_PATIENT_SUMMARY = 'PATIENT',
ODS_REVIEW_SUMMARY = 'REVIEW',
}

export type FileTypeData = {
Expand Down Expand Up @@ -34,4 +36,11 @@ export const reports: ReportData[] = [
reportType: REPORT_TYPE.ODS_PATIENT_SUMMARY,
endpoint: endpoints.ODS_REPORT,
},
{
title: 'Documents review summary report',
description: ReviewSummaryDescription,
fileTypes: [{ extension: 'csv', label: 'a CSV' }],
reportType: REPORT_TYPE.ODS_REVIEW_SUMMARY,
endpoint: endpoints.ODS_REPORT,
},
];
2 changes: 1 addition & 1 deletion lambdas/services/ods_report_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ def get_documents_for_review(
if output_file_type != FileType.CSV:
raise OdsReportException(400, LambdaError.UnsupportedFileType)

query_filter = self.document_upload_review_service.build_review_query_filter()
query_filter = self.document_upload_review_service.build_review_dynamo_filter()

results = self.document_upload_review_service.fetch_documents_from_table(
search_key="Custodian",
Expand Down
2 changes: 1 addition & 1 deletion lambdas/tests/unit/services/test_ods_report_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -422,7 +422,7 @@ def test_get_documents_for_review(

mocker.patch.object(
ods_report_service.document_upload_review_service,
"build_review_query_filter",
"build_review_dynamo_filter",
return_value=expected_query_filter,
)

Expand Down
Loading