Skip to content
Merged
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 @@ -15,6 +15,7 @@ import {
UploadDocumentType,
DOCUMENT_UPLOAD_STATE,
} from '../../../../types/pages/UploadDocumentsPage/types';
import { NHS_NUMBER_UNKNOWN } from '../../../../helpers/constants/numbers';

const mockNavigate = vi.fn();
const mockSetPatientDetails = vi.fn();
Expand All @@ -25,7 +26,7 @@ vi.mock('react-router-dom', async (): Promise<unknown> => {
const actual = await vi.importActual('react-router-dom');
return {
...actual,
useNavigate: (): Mock => mockNavigate,
useNavigate: () => mockNavigate,
useParams: (): { reviewId: string } => ({ reviewId: 'test-review-123' }),
};
});
Expand Down Expand Up @@ -105,8 +106,8 @@ const renderComponent = (reviewData?: ReviewDetails, reviewSnoMed?: DOCUMENT_TYP
);
};

describe('ReviewDetailsPage', () => {
const testReviewSnoMed: DOCUMENT_TYPE = '16521000000101' as DOCUMENT_TYPE;
describe('ReviewDetailsStage', () => {
const testReviewSnomed: DOCUMENT_TYPE = '16521000000101' as DOCUMENT_TYPE;
const mockPatientDetails = buildPatientDetails({
givenName: ['Lillie'],
familyName: 'Dae',
Expand All @@ -117,9 +118,9 @@ describe('ReviewDetailsPage', () => {

const mockReviewData = new ReviewDetails(
'test-review-123',
testReviewSnoMed,
testReviewSnomed,
'2023-01-01T00:00:00Z',
'test.uploader@example.com',
'M85143',
'2023-01-01T00:00:00Z',
'Test review reason',
'1',
Expand Down Expand Up @@ -652,6 +653,43 @@ describe('ReviewDetailsPage', () => {
});
});

describe('Navigation - Unknown NHS Number', () => {
it('navigates to patient search page when NHS number is unknown', async () => {
const mockLoadReviewData = vi.fn().mockResolvedValue(undefined);

const unknownNhsNumberReviewData = new ReviewDetails(
'test-review-123',
testReviewSnomed,
'2023-01-01T00:00:00Z',
'M85143',
'2023-01-01T00:00:00Z',
'Test review reason',
'1',
NHS_NUMBER_UNKNOWN,
);

render(
<ReviewsDetailsPageComponent
reviewData={unknownNhsNumberReviewData}
loadReviewData={mockLoadReviewData}
setDownloadStage={vi.fn()}
downloadStage={DOWNLOAD_STAGE.SUCCEEDED}
uploadDocuments={[]}
/>,
);

await waitFor(
() => {
expect(mockNavigate).toHaveBeenCalledWith(
'/admin/reviews/test-review-123/search-patient',
undefined,
);
},
{ timeout: 2000 },
);
});
});

describe('Form submission with react-hook-form', () => {
beforeEach(() => {
vi.spyOn(isLocalModule, 'isLocal', 'get').mockReturnValue(true);
Expand Down Expand Up @@ -1118,7 +1156,7 @@ describe('ReviewDetailsPage', () => {
vi.spyOn(isLocalModule, 'isLocal', 'get').mockReturnValue(true);
const reviewWithReason = new ReviewDetails(
'test-review-123',
testReviewSnoMed,
testReviewSnomed,
'2023-01-01T00:00:00Z',
'test.uploader@example.com',
'2023-01-01T00:00:00Z',
Expand All @@ -1140,7 +1178,7 @@ describe('ReviewDetailsPage', () => {
vi.spyOn(isLocalModule, 'isLocal', 'get').mockReturnValue(true);
const reviewWithNullFiles = new ReviewDetails(
'test-review-123',
testReviewSnoMed,
testReviewSnomed,
'2023-01-01T00:00:00Z',
'test.uploader@example.com',
'2023-01-01T00:00:00Z',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import { AxiosError } from 'axios';
import { errorToParams } from '../../../../helpers/utils/errorToParams';
import waitForSeconds from '../../../../helpers/utils/waitForSeconds';
import DocumentUploadLloydGeorgePreview from '../../_documentUpload/documentUploadLloydGeorgePreview/DocumentUploadLloydGeorgePreview';
import { NHS_NUMBER_UNKNOWN } from '../../../../helpers/constants/numbers';

export type ReviewsDetailsStageProps = {
reviewData: ReviewDetails;
Expand Down Expand Up @@ -146,10 +147,13 @@ const ReviewsDetailsStage = ({
setisLoadingPatientDetails(false);
return;
}
if (reviewData.nhsNumber === NHS_NUMBER_UNKNOWN) {
setisLoadingPatientDetails(false);
return;
}
const getPatientDetails = async (): Promise<void> => {
if (!isFetchingReviewDetailsRef.current) {
isFetchingReviewDetailsRef.current = true;

await handlePatientSearch({
nhsNumber: reviewData.nhsNumber,
setSearchingState: () => {},
Expand Down Expand Up @@ -178,6 +182,14 @@ const ReviewsDetailsStage = ({
while (retryCount < maxRetries) {
try {
await loadReviewData();
if (reviewData.nhsNumber === NHS_NUMBER_UNKNOWN) {
navigateUrlParam(
routeChildren.ADMIN_REVIEW_SEARCH_PATIENT,
{ reviewId: reviewId! },
navigate,
);
return;
}
break;
} catch (e) {
retryCount += 1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import SpinnerV2 from '../../../generic/spinnerV2/SpinnerV2';
import { REPORT_TYPE } from '../../../../types/generic/reports';
import { AxiosError } from 'axios';
import { errorToParams } from '../../../../helpers/utils/errorToParams';
import { NHS_NUMBER_UNKNOWN } from '../../../../helpers/constants/numbers';

export type ReviewsPageProps = {
setReviewData: Dispatch<SetStateAction<ReviewDetails | null>>;
Expand Down Expand Up @@ -64,7 +65,7 @@ const ReviewTableRows = ({
return (
<Table.Row key={review.id}>
<Table.Cell>
{review.nhsNumber === '0000000000'
{review.nhsNumber === NHS_NUMBER_UNKNOWN
? 'N/A'
: formatNhsNumber(review.nhsNumber)}
</Table.Cell>
Expand Down
1 change: 1 addition & 0 deletions app/src/helpers/constants/numbers.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const NHS_NUMBER_UNKNOWN = '0000000000';
Loading
Loading