diff --git a/src/patient-chart/laboratory-active-test-order/laboratory-active-test-order-results.component.tsx b/src/patient-chart/laboratory-active-test-order/laboratory-active-test-order-results.component.tsx
index d4123758..984a35a1 100644
--- a/src/patient-chart/laboratory-active-test-order/laboratory-active-test-order-results.component.tsx
+++ b/src/patient-chart/laboratory-active-test-order/laboratory-active-test-order-results.component.tsx
@@ -13,6 +13,7 @@ import {
ErrorState,
showModal,
useConfig,
+ usePagination,
} from "@openmrs/esm-framework";
import { mutate } from "swr";
import {
@@ -85,22 +86,14 @@ const LaboratoryActiveTestOrderResults: React.FC<
"Active Laboratory Tests"
);
- const {
- items,
- tableHeaders,
- currentPage,
- pageSizes,
- totalItems,
- goTo,
- currentPageSize,
- setPageSize,
- isLoading,
- isError,
- } = useLaboratoryOrderResultsPages({
- v: ResourceRepresentation.Full,
- totalCount: true,
- patientUuid: patientUuid,
- });
+ const { items, tableHeaders, isLoading, isError } =
+ useLaboratoryOrderResultsPages({
+ v: ResourceRepresentation.Full,
+ totalCount: true,
+ patientUuid: patientUuid,
+ });
+ const pageSizes = [10, 20, 30, 40, 50];
+ const [currentPageSize, setPageSize] = useState(10);
const sortedLabRequests = useMemo(() => {
return [...items].sort((a, b) => {
@@ -226,69 +219,77 @@ const LaboratoryActiveTestOrderResults: React.FC<
const currentDateTime = new Date().getTime();
const twentyFourHoursAgo = currentDateTime - 24 * 60 * 60 * 1000;
- const tableRows = useMemo(() => {
- return laboratoryOrders
- ?.filter((entry) => {
- const entryDate = new Date(entry.encounterDatetime).getTime();
- return entryDate >= twentyFourHoursAgo && entryDate <= currentDateTime;
- })
- ?.map((entry, index) => ({
- ...entry,
- id: entry.uuid,
- orderDate: {
- content: (
-
- {formatDate(parseDate(entry.encounterDatetime), {
- time: true,
- mode: "standard",
- })}
-
- ),
- },
- orders: {
- content: (
- <>
- {entry?.orders
- ?.filter(
- (order) =>
- order?.type === "testorder" && order?.action === "NEW"
- )
- .map((order) => (
-
- {order?.concept?.display}
-
- ))}
- >
- ),
- },
-
- location: {
- content: {entry.location.display},
- },
- status: {
- content: --,
- },
- actions: {
- content: (
-
-
- {enableSendingLabTestsByEmail &&
}
-
- ),
- },
- }));
+ const filteredActiveTestOrderResults = useMemo(() => {
+ return laboratoryOrders?.filter((entry) => {
+ const entryDate = new Date(entry.encounterDatetime).getTime();
+ return entryDate >= twentyFourHoursAgo && entryDate <= currentDateTime;
+ });
}, [currentDateTime, laboratoryOrders, twentyFourHoursAgo]);
+ const {
+ goTo,
+ results: paginatedActiveTestOrderResults,
+ currentPage,
+ } = usePagination(filteredActiveTestOrderResults, currentPageSize);
+
+ const tableRows = useMemo(() => {
+ return paginatedActiveTestOrderResults?.map((entry, index) => ({
+ ...entry,
+ id: entry.uuid,
+ orderDate: {
+ content: (
+
+ {formatDate(parseDate(entry.encounterDatetime), {
+ time: true,
+ mode: "standard",
+ })}
+
+ ),
+ },
+ orders: {
+ content: (
+ <>
+ {entry?.orders
+ ?.filter(
+ (order) =>
+ order?.type === "testorder" && order?.action === "NEW"
+ )
+ .map((order) => (
+
+ {order?.concept?.display}
+
+ ))}
+ >
+ ),
+ },
+
+ location: {
+ content: {entry.location.display},
+ },
+ status: {
+ content: --,
+ },
+ actions: {
+ content: (
+
+
+ {enableSendingLabTestsByEmail &&
}
+
+ ),
+ },
+ }));
+ }, [enableSendingLabTestsByEmail, paginatedActiveTestOrderResults]);
+
if (isLoading) {
return ;
}
@@ -297,7 +298,7 @@ const LaboratoryActiveTestOrderResults: React.FC<
return ;
}
- if (items?.length >= 0) {
+ if (filteredActiveTestOrderResults?.length >= 0) {
return (
@@ -451,7 +452,7 @@ const LaboratoryActiveTestOrderResults: React.FC<
page={currentPage}
pageSize={currentPageSize}
pageSizes={pageSizes}
- totalItems={totalItems}
+ totalItems={filteredActiveTestOrderResults?.length}
onChange={({ pageSize, page }) => {
if (pageSize !== currentPageSize) {
setPageSize(pageSize);
diff --git a/src/patient-chart/laboratory-order-referals/laboratory-order-referals.component.tsx b/src/patient-chart/laboratory-order-referals/laboratory-order-referals.component.tsx
index 4875023f..a4fd258e 100644
--- a/src/patient-chart/laboratory-order-referals/laboratory-order-referals.component.tsx
+++ b/src/patient-chart/laboratory-order-referals/laboratory-order-referals.component.tsx
@@ -318,7 +318,7 @@ const LaboratoryOrderReferalResults: React.FC<
),
},
}));
- }, [laboratoryOrders]);
+ }, [enableSendingLabTestsByEmail, laboratoryOrders]);
if (isLoading) {
return ;
diff --git a/src/patient-chart/laboratory-past-test/laboratory-past-test-order-results.component.tsx b/src/patient-chart/laboratory-past-test/laboratory-past-test-order-results.component.tsx
index 834bdc0c..291f2653 100644
--- a/src/patient-chart/laboratory-past-test/laboratory-past-test-order-results.component.tsx
+++ b/src/patient-chart/laboratory-past-test/laboratory-past-test-order-results.component.tsx
@@ -13,6 +13,7 @@ import {
ErrorState,
showModal,
useConfig,
+ usePagination,
} from "@openmrs/esm-framework";
import {
@@ -81,22 +82,14 @@ const LaboratoryPastTestOrderResults: React.FC<
"pastLaboratoryTestsDisplayTextTitle",
"Past Laboratory Tests"
);
- const {
- items,
- tableHeaders,
- currentPage,
- pageSizes,
- totalItems,
- goTo,
- currentPageSize,
- setPageSize,
- isLoading,
- isError,
- } = useLaboratoryOrderResultsPages({
- v: ResourceRepresentation.Full,
- totalCount: true,
- patientUuid: patientUuid,
- });
+ const { items, tableHeaders, isLoading, isError } =
+ useLaboratoryOrderResultsPages({
+ v: ResourceRepresentation.Full,
+ totalCount: true,
+ patientUuid: patientUuid,
+ });
+ const pageSizes = [10, 20, 30, 40, 50];
+ const [currentPageSize, setPageSize] = useState(10);
const sortedLabRequests = useMemo(() => {
return [...items].sort((a, b) => {
@@ -210,67 +203,74 @@ const LaboratoryPastTestOrderResults: React.FC<
const currentDateTime = new Date().getTime();
const twentyFourHoursAgo = currentDateTime - 24 * 60 * 60 * 1000;
+ const filteredPastTestOrderResults = useMemo(() => {
+ return laboratoryOrders?.filter((entry) => {
+ const entryDate = new Date(entry.encounterDatetime).getTime();
+ return entryDate < twentyFourHoursAgo;
+ });
+ }, [laboratoryOrders, twentyFourHoursAgo]);
+ const {
+ goTo,
+ results: paginatedPastTestOrderResults,
+ currentPage,
+ } = usePagination(filteredPastTestOrderResults, currentPageSize);
+
const tableRows = useMemo(() => {
- return laboratoryOrders
- ?.filter((entry) => {
- const entryDate = new Date(entry.encounterDatetime).getTime();
- return entryDate < twentyFourHoursAgo;
- })
- ?.map((entry, index) => ({
- ...entry,
- id: entry.uuid,
- orderDate: {
- content: (
-
- {formatDate(parseDate(entry.encounterDatetime), {
- time: true,
- mode: "standard",
- })}
-
- ),
- },
- orders: {
- content: (
- <>
- {entry?.orders
- ?.filter(
- (order) =>
- order?.type === "testorder" && order?.action === "NEW"
- )
- .map((order) => (
-
- {order?.concept?.display}
-
- ))}
- >
- ),
- },
- location: {
- content: {entry.location.display},
- },
- status: {
- content: --,
- },
- actions: {
- content: (
-
-
- {enableSendingLabTestsByEmail &&
}
-
- ),
- },
- }));
- }, [enableSendingLabTestsByEmail, laboratoryOrders, twentyFourHoursAgo]);
+ return paginatedPastTestOrderResults?.map((entry, index) => ({
+ ...entry,
+ id: entry.uuid,
+ orderDate: {
+ content: (
+
+ {formatDate(parseDate(entry.encounterDatetime), {
+ time: true,
+ mode: "standard",
+ })}
+
+ ),
+ },
+ orders: {
+ content: (
+ <>
+ {entry?.orders
+ ?.filter(
+ (order) =>
+ order?.type === "testorder" && order?.action === "NEW"
+ )
+ .map((order) => (
+
+ {order?.concept?.display}
+
+ ))}
+ >
+ ),
+ },
+ location: {
+ content: {entry.location.display},
+ },
+ status: {
+ content: --,
+ },
+ actions: {
+ content: (
+
+
+ {enableSendingLabTestsByEmail &&
}
+
+ ),
+ },
+ }));
+ }, [enableSendingLabTestsByEmail, paginatedPastTestOrderResults]);
if (isLoading) {
return ;
@@ -280,7 +280,7 @@ const LaboratoryPastTestOrderResults: React.FC<
return ;
}
- if (items?.length >= 0) {
+ if (filteredPastTestOrderResults?.length >= 0) {
return (
@@ -423,7 +423,7 @@ const LaboratoryPastTestOrderResults: React.FC<
page={currentPage}
pageSize={currentPageSize}
pageSizes={pageSizes}
- totalItems={totalItems}
+ totalItems={filteredPastTestOrderResults?.length}
onChange={({ pageSize, page }) => {
if (pageSize !== currentPageSize) {
setPageSize(pageSize);
diff --git a/src/patient-chart/patient-laboratory-results.component.tsx b/src/patient-chart/patient-laboratory-results.component.tsx
index 3587ecf9..e22b8b79 100644
--- a/src/patient-chart/patient-laboratory-results.component.tsx
+++ b/src/patient-chart/patient-laboratory-results.component.tsx
@@ -1,5 +1,5 @@
import { EmptyState } from "@openmrs/esm-patient-common-lib";
-import React from "react";
+import React, { useState } from "react";
import { useTranslation } from "react-i18next";
import LaboratoryActiveTestOrderResults from "./laboratory-active-test-order/laboratory-active-test-order-results.component";
import LaboratoryPastTestOrderResults from "./laboratory-past-test/laboratory-past-test-order-results.component";
@@ -13,6 +13,10 @@ const PatientLaboratoryResults: React.FC = ({
}) => {
const { t } = useTranslation();
+ const [hasActiveOrderResults, setHasActiveOrderResults] = useState<
+ boolean | null
+ >(null);
+
return (
<>