Skip to content

Commit 367919a

Browse files
got it working
1 parent 2a485db commit 367919a

File tree

5 files changed

+38
-42
lines changed

5 files changed

+38
-42
lines changed

packages/cpt-ui/src/components/prescriptionList/PrescriptionsListTable.tsx

Lines changed: 5 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import {PRESCRIPTION_LIST_TABLE_TEXT} from "@/constants/ui-strings/PrescriptionL
88
import {Link} from "react-router-dom"
99
import {FRONTEND_PATHS} from "@/constants/environment"
1010
import {useSearchContext} from "@/context/SearchProvider"
11-
import {useNavigationContext} from "@/context/NavigationProvider"
1211

1312
export interface PrescriptionsListTableProps {
1413
textContent: PrescriptionsListStrings;
@@ -26,7 +25,6 @@ const PrescriptionsListTable = ({
2625
const initialSortConfig: SortConfig = {key: "issueDate", direction: null}
2726
const currentTabId: TabId = textContent.testid as TabId
2827
const searchContext = useSearchContext()
29-
const navigationContext = useNavigationContext()
3028

3129
// all tabs have own key in state object so each tab can be sorted individually
3230
const [allSortConfigs, setAllSortConfigs] = React.useState<
@@ -144,32 +142,12 @@ const PrescriptionsListTable = ({
144142
prescriptionId: string,
145143
issueNumber: string | undefined
146144
) => {
147-
const originalSearchParams =
148-
navigationContext.getOriginalSearchParameters()
149-
150-
let relevantParams = {}
151-
if (originalSearchParams) {
152-
if (originalSearchParams.prescriptionId) {
153-
relevantParams =
154-
navigationContext.getRelevantSearchParameters("prescriptionId")
155-
} else if (originalSearchParams.nhsNumber) {
156-
relevantParams =
157-
navigationContext.getRelevantSearchParameters("nhsNumber")
158-
} else if (
159-
originalSearchParams.firstName ||
160-
originalSearchParams.lastName
161-
) {
162-
relevantParams =
163-
navigationContext.getRelevantSearchParameters("basicDetails")
164-
}
145+
// Only set the prescription-specific parameters needed for the details page
146+
// Don't modify or mix with the original search parameters to avoid cross-contamination
147+
searchContext.setPrescriptionId(prescriptionId)
148+
if (issueNumber) {
149+
searchContext.setIssueNumber(issueNumber)
165150
}
166-
167-
// only preserve relevant search parameters and add prescription-specific ones
168-
searchContext.setAllSearchParameters({
169-
...relevantParams,
170-
prescriptionId,
171-
issueNumber
172-
})
173151
}
174152

175153
const getSortedItems = () => {

packages/cpt-ui/src/components/prescriptionSearch/BasicDetailsSearch.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,14 @@ export default function BasicDetailsSearch() {
5353

5454
// restore original search parameters when available
5555
useEffect(() => {
56-
const originalParams = navigationContext.getOriginalSearchParameters()
57-
if (originalParams) {
58-
setFirstName(originalParams.firstName || "")
59-
setLastName(originalParams.lastName || "")
60-
setDobDay(originalParams.dobDay || "")
61-
setDobMonth(originalParams.dobMonth || "")
62-
setDobYear(originalParams.dobYear || "")
63-
setPostcode(originalParams.postcode || "")
56+
const relevantParams = navigationContext.getRelevantSearchParameters("basicDetails")
57+
if (relevantParams) {
58+
setFirstName(relevantParams.firstName || "")
59+
setLastName(relevantParams.lastName || "")
60+
setDobDay(relevantParams.dobDay || "")
61+
setDobMonth(relevantParams.dobMonth || "")
62+
setDobYear(relevantParams.dobYear || "")
63+
setPostcode(relevantParams.postcode || "")
6464
}
6565
}, [navigationContext])
6666

packages/cpt-ui/src/components/prescriptionSearch/NhsNumSearch.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ export default function NhsNumSearch() {
4848
}, [searchContext.nhsNumber, searchContext.searchType])
4949

5050
useEffect(() => {
51-
const originalParams = navigationContext.getOriginalSearchParameters()
52-
if (originalParams && originalParams.nhsNumber) {
53-
setNhsNumber(originalParams.nhsNumber || "")
51+
const relevantParams = navigationContext.getRelevantSearchParameters("nhsNumber")
52+
if (relevantParams && relevantParams.nhsNumber) {
53+
setNhsNumber(relevantParams.nhsNumber || "")
5454
}
5555
}, [navigationContext])
5656

packages/cpt-ui/src/components/prescriptionSearch/PrescriptionIdSearch.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ export default function PrescriptionIdSearch() {
4343
const errorMessages = PRESCRIPTION_ID_SEARCH_STRINGS.errors
4444

4545
useEffect(() => {
46-
const originalParams = navigationContext.getOriginalSearchParameters()
47-
if (originalParams && originalParams.prescriptionId) {
48-
setPrescriptionId(originalParams.prescriptionId || "")
46+
const relevantParams = navigationContext.getRelevantSearchParameters("prescriptionId")
47+
if (relevantParams && relevantParams.prescriptionId) {
48+
setPrescriptionId(relevantParams.prescriptionId || "")
4949
}
5050
}, [navigationContext])
5151

packages/cpt-ui/src/pages/SearchPrescriptionPage.tsx

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, {Fragment} from "react"
1+
import React, {Fragment, useEffect} from "react"
22
import {
33
Col,
44
Container,
@@ -14,10 +14,28 @@ import BasicDetailsSearch from "@/components/prescriptionSearch/BasicDetailsSear
1414

1515
import {HERO_TEXT} from "@/constants/ui-strings/SearchForAPrescriptionStrings"
1616
import {PRESCRIPTION_SEARCH_TABS} from "@/constants/ui-strings/SearchTabStrings"
17+
import {useSearchContext} from "@/context/SearchProvider"
1718

1819
export default function SearchPrescriptionPage() {
1920
const location = useLocation()
2021
const pathname = location.pathname
22+
const searchContext = useSearchContext()
23+
24+
// Clear search context contamination when navigating to search pages
25+
useEffect(() => {
26+
const allParams = searchContext.getAllSearchParameters()
27+
28+
// Check if we have contamination from multiple search types
29+
const hasPrescriptionId = !!allParams.prescriptionId
30+
const hasNhsNumber = !!allParams.nhsNumber
31+
const hasBasicDetails = !!(allParams.firstName || allParams.lastName || allParams.dobDay)
32+
33+
const contaminationCount = [hasPrescriptionId, hasNhsNumber, hasBasicDetails].filter(Boolean).length
34+
35+
if (contaminationCount > 1) {
36+
searchContext.clearSearchParameters()
37+
}
38+
}, [pathname, searchContext])
2139

2240
// Map paths directly to content components
2341
const pathContent: Record<string, React.ReactNode> = {

0 commit comments

Comments
 (0)