Skip to content

Commit 03e69eb

Browse files
authored
Merge branch 'main' into fix
2 parents d992677 + 4030ebb commit 03e69eb

File tree

3 files changed

+156
-158
lines changed

3 files changed

+156
-158
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,4 +120,4 @@
120120
"@carbon/react": "1.14.0"
121121
},
122122
"packageManager": "[email protected]"
123-
}
123+
}

src/patient-chart/laboratory-order.component.tsx

Lines changed: 42 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,18 @@ const LaboratoryOrder: React.FC<LaboratoryOrderOverviewProps> = ({
8787
const [currentPageSize, setPageSize] = useState(10);
8888
const [nextOffSet, setNextOffSet] = useState(0);
8989

90+
const sortedLabRequests = useMemo(() => {
91+
return [...labRequests].sort((a, b) => {
92+
const dateA = new Date(a.encounterDatetime);
93+
const dateB = new Date(b.encounterDatetime);
94+
return dateB.getTime() - dateA.getTime();
95+
});
96+
}, [labRequests]);
9097
const {
9198
goTo,
9299
results: paginatedLabEntries,
93100
currentPage,
94-
} = usePagination(labRequests, currentPageSize);
101+
} = usePagination(sortedLabRequests, currentPageSize);
95102

96103
let columns = [
97104
{
@@ -107,33 +114,29 @@ const LaboratoryOrder: React.FC<LaboratoryOrderOverviewProps> = ({
107114

108115
const [searchTerm, setSearchTerm] = useState("");
109116
const [items, setItems] = useState(paginatedLabEntries);
110-
const [initialTests] = useState(paginatedLabEntries);
117+
const [initialTests, setInitialTests] = useState(paginatedLabEntries);
111118

112-
const handleChange = useCallback(
113-
(val) => {
114-
const searchText = val?.target?.value;
115-
setSearchTerm(searchText);
116-
if (searchText?.trim() == "") {
117-
setItems(initialTests);
118-
} else {
119-
let filteredItems = [];
120-
items.map((item) => {
121-
const newArray = item?.orders?.filter(
122-
(order) =>
123-
order?.concept?.display
124-
.toLowerCase()
125-
.startsWith(searchText?.toLowerCase()) == true
126-
);
127-
if (newArray.length >= 1) {
128-
filteredItems.push(item);
129-
}
130-
});
119+
const handleChange = useCallback((event) => {
120+
const searchText = event?.target?.value?.trim().toLowerCase();
121+
setSearchTerm(searchText);
122+
}, []);
131123

132-
setItems(filteredItems);
133-
}
134-
},
135-
[items, initialTests]
136-
);
124+
useEffect(() => {
125+
if (!searchTerm) {
126+
setItems(initialTests);
127+
} else {
128+
const filteredItems = initialTests.filter((item) =>
129+
item?.orders?.some((order) =>
130+
order?.concept?.display.toLowerCase().includes(searchTerm)
131+
)
132+
);
133+
setItems(filteredItems);
134+
}
135+
}, [searchTerm, initialTests]);
136+
137+
useEffect(() => {
138+
setInitialTests(paginatedLabEntries);
139+
}, [paginatedLabEntries]);
137140

138141
const EmailButtonAction: React.FC = () => {
139142
const launchSendEmailModal = useCallback(() => {
@@ -220,7 +223,7 @@ const LaboratoryOrder: React.FC<LaboratoryOrderOverviewProps> = ({
220223
};
221224

222225
const tableRows = useMemo(() => {
223-
return paginatedLabEntries?.map((entry) => ({
226+
return items?.map((entry, index) => ({
224227
...entry,
225228
id: entry.uuid,
226229
orderDate: {
@@ -271,7 +274,7 @@ const LaboratoryOrder: React.FC<LaboratoryOrderOverviewProps> = ({
271274
),
272275
},
273276
}));
274-
}, [paginatedLabEntries]);
277+
}, [items]);
275278

276279
if (loading) {
277280
return <DataTableSkeleton role="progressbar" />;
@@ -281,7 +284,7 @@ const LaboratoryOrder: React.FC<LaboratoryOrderOverviewProps> = ({
281284
return <ErrorState error={isError} headerTitle={"Error"} />;
282285
}
283286

284-
if (items?.length >= 0) {
287+
if (paginatedLabEntries?.length >= 0) {
285288
return (
286289
<div>
287290
<DataTable
@@ -292,7 +295,14 @@ const LaboratoryOrder: React.FC<LaboratoryOrderOverviewProps> = ({
292295
size={isTablet ? "lg" : "sm"}
293296
experimentalAutoAlign={true}
294297
>
295-
{({ rows, headers, getHeaderProps, getTableProps, getRowProps }) => (
298+
{({
299+
rows,
300+
headers,
301+
getHeaderProps,
302+
getTableProps,
303+
getRowProps,
304+
onInputChange,
305+
}) => (
296306
<TableContainer className={styles.tableContainer}>
297307
<TableToolbar
298308
style={{
@@ -385,9 +395,7 @@ const LaboratoryOrder: React.FC<LaboratoryOrderOverviewProps> = ({
385395
className={styles.expandedActiveVisitRow}
386396
colSpan={headers.length + 2}
387397
>
388-
<TestsResults
389-
obs={paginatedLabEntries[index].obs}
390-
/>
398+
<TestsResults obs={sortedLabRequests[index].obs} />
391399
</TableExpandedRow>
392400
) : (
393401
<TableExpandedRow
@@ -424,7 +432,7 @@ const LaboratoryOrder: React.FC<LaboratoryOrderOverviewProps> = ({
424432
page={currentPage}
425433
pageSize={currentPageSize}
426434
pageSizes={pageSizes}
427-
totalItems={paginatedLabEntries?.length}
435+
totalItems={sortedLabRequests?.length}
428436
className={styles.pagination}
429437
onChange={({ pageSize, page }) => {
430438
if (pageSize !== currentPageSize) {
@@ -441,13 +449,6 @@ const LaboratoryOrder: React.FC<LaboratoryOrderOverviewProps> = ({
441449
</div>
442450
);
443451
}
444-
445-
// return (
446-
// <div>
447-
// {/* <div className={styles.headerBtnContainer}></div> */}
448-
// <EmptyState displayText={"Tests Ordered"} headerTitle={"Tests Ordered"} />
449-
// </div>
450-
// );
451452
};
452453

453454
export default LaboratoryOrder;

src/routes.json

Lines changed: 113 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -1,118 +1,115 @@
11
{
2-
"$schema": "https://json.openmrs.org/routes.schema.json",
3-
"backendDependencies": {
4-
"fhir2": "^1.2.0",
5-
"webservices.rest": "^2.24.0"
6-
},
7-
"pages": [
8-
{
9-
"component": "root",
10-
"route": "laboratory"
11-
}
12-
],
13-
"extensions": [
14-
{
15-
"name": "laboratory-dashboard",
16-
"slot": "laboratory-dashboard-slot",
17-
"component": "root"
2+
"$schema": "https://json.openmrs.org/routes.schema.json",
3+
"backendDependencies": {
4+
"fhir2": "^1.2.0",
5+
"webservices.rest": "^2.24.0"
186
},
19-
{
20-
"name": "laboratory-dashboard-link",
21-
"slot": "homepage-dashboard-slot",
22-
"component": "laboratoryDashboardLink",
23-
"meta": {
24-
"name": "laboratory",
25-
"slot": "laboratory-dashboard-slot",
26-
"title": "Laboratory"
27-
}
28-
},
29-
{
30-
"name": "laboratory-patient-chart-link",
31-
"slot": "patient-chart-dashboard-slot",
32-
"component": "laboratoryOrderDashboardLink",
33-
"order": 13,
34-
"meta": {
35-
"path": "laboratory-orders",
36-
"slot": "laboratory-orders-dashboard-slot",
37-
"title": "Laboratory",
38-
"columns": 1,
39-
"layoutMode": "anchored"
40-
}
41-
},
42-
{
43-
"name": "laboratory-orders-summary",
44-
"slot": "laboratory-orders-dashboard-slot",
45-
"component": "laboratoryOrderComponent"
46-
},
47-
{
48-
"name": "add-to-worklist-dialog",
49-
"component": "addToWorklistDialog"
50-
},
51-
{
52-
"name": "results-summary",
53-
"component": "resultsSummaryWorkSpace"
54-
},
55-
{
56-
"name":"edit-results-dialog",
57-
"component": "editResultsDialog"
58-
},
59-
{
60-
"name":"send-email-dialog",
61-
"component": "sendEmailDialog"
62-
},
63-
{
64-
"name" : "review-item-dialog",
65-
"component": "reviewItemDialog"
66-
},
67-
{
68-
"name" : "reject-order-dialog",
69-
"component": "rejectOrderDialog"
70-
},
71-
{
72-
"name": "worklist-panel-component",
73-
"slot": "lab-panels-slot",
74-
"component": "worklistComponent",
75-
"meta": {
76-
"name": "worklistPanelSlot",
77-
"title": "Worklist"
78-
}
79-
},
80-
{
81-
"name": "referred-panel-component",
82-
"slot": "lab-panels-slot",
83-
"component": "referredTestComponent",
84-
"meta": {
85-
"name": "referredPanleSlot",
86-
"title": "Referred tests"
87-
}
88-
},
89-
{
90-
"name": "review-panel-component",
91-
"slot": "lab-panels-slot",
92-
"component": "reviewComponent",
93-
"meta": {
94-
"name": "reviewPanelSlot",
95-
"title": "Review"
96-
}
97-
},
98-
{
99-
"name": "approved-panel-component",
100-
"slot": "lab-panels-slot",
101-
"component": "approvedComponent",
102-
"meta": {
103-
"name": "approvedPanelSlot",
104-
"title": "Approved"
105-
}
106-
},
107-
{
108-
"name": "pick-lab-request-button",
109-
"component": "pickLabRequestButton",
110-
"slot": "order-actions-slot"
111-
},
112-
{
113-
"name": "reject-order-button",
114-
"component": "rejectOrderButton",
115-
"slot": "order-actions-slot"
116-
}
117-
]
118-
}
7+
"pages": [{
8+
"component": "root",
9+
"route": "laboratory"
10+
}],
11+
"extensions": [{
12+
"name": "laboratory-dashboard",
13+
"slot": "laboratory-dashboard-slot",
14+
"component": "root"
15+
},
16+
{
17+
"name": "laboratory-dashboard-link",
18+
"slot": "homepage-dashboard-slot",
19+
"component": "laboratoryDashboardLink",
20+
"meta": {
21+
"name": "laboratory",
22+
"slot": "laboratory-dashboard-slot",
23+
"title": "Laboratory"
24+
}
25+
},
26+
{
27+
"name": "laboratory-patient-chart-link",
28+
"slot": "patient-chart-dashboard-slot",
29+
"component": "laboratoryOrderDashboardLink",
30+
"order": 13,
31+
"meta": {
32+
"path": "laboratory-orders",
33+
"slot": "laboratory-orders-dashboard-slot",
34+
"title": "Laboratory",
35+
"columns": 1,
36+
"layoutMode": "anchored"
37+
}
38+
},
39+
{
40+
"name": "laboratory-orders-summary",
41+
"slot": "laboratory-orders-dashboard-slot",
42+
"component": "laboratoryOrderComponent"
43+
},
44+
{
45+
"name": "add-to-worklist-dialog",
46+
"component": "addToWorklistDialog"
47+
},
48+
{
49+
"name": "results-summary",
50+
"component": "resultsSummaryWorkSpace"
51+
},
52+
{
53+
"name": "edit-results-dialog",
54+
"component": "editResultsDialog"
55+
},
56+
{
57+
"name": "send-email-dialog",
58+
"component": "sendEmailDialog"
59+
},
60+
{
61+
"name": "review-item-dialog",
62+
"component": "reviewItemDialog"
63+
},
64+
{
65+
"name": "reject-order-dialog",
66+
"component": "rejectOrderDialog"
67+
},
68+
{
69+
"name": "worklist-panel-component",
70+
"slot": "lab-panels-slot",
71+
"component": "worklistComponent",
72+
"meta": {
73+
"name": "worklistPanelSlot",
74+
"title": "Worklist"
75+
}
76+
},
77+
{
78+
"name": "referred-panel-component",
79+
"slot": "lab-panels-slot",
80+
"component": "referredTestComponent",
81+
"meta": {
82+
"name": "referredPanleSlot",
83+
"title": "Referred tests"
84+
}
85+
},
86+
{
87+
"name": "review-panel-component",
88+
"slot": "lab-panels-slot",
89+
"component": "reviewComponent",
90+
"meta": {
91+
"name": "reviewPanelSlot",
92+
"title": "Review"
93+
}
94+
},
95+
{
96+
"name": "approved-panel-component",
97+
"slot": "lab-panels-slot",
98+
"component": "approvedComponent",
99+
"meta": {
100+
"name": "approvedPanelSlot",
101+
"title": "Approved"
102+
}
103+
},
104+
{
105+
"name": "pick-lab-request-button",
106+
"component": "pickLabRequestButton",
107+
"slot": "order-actions-slot"
108+
},
109+
{
110+
"name": "reject-order-button",
111+
"component": "rejectOrderButton",
112+
"slot": "order-actions-slot"
113+
}
114+
]
115+
}

0 commit comments

Comments
 (0)