Skip to content

Commit

Permalink
U4X-311 : Review queues to enable more than one user log in at the sa…
Browse files Browse the repository at this point in the history
…me service point and work independently e.g.concurrently serving different patients in the same queue (#142)

* add filter queues entries by provider

* fix lint

* add provider
  • Loading branch information
jabahum authored Jan 11, 2024
1 parent 3599050 commit 22e47f6
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import {
DataTable,
DataTableHeader,
DataTableSkeleton,
DefinitionTooltip,
Layer,
Pagination,
Tab,
Expand Down Expand Up @@ -100,7 +99,11 @@ const ActiveVisitsTable: React.FC<ActiveVisitsTableProps> = ({ status }) => {
const { t } = useTranslation();
const session = useSession();

const { patientQueueEntries, isLoading } = usePatientQueuesList(session?.sessionLocation?.uuid, status);
const { patientQueueEntries, isLoading } = usePatientQueuesList(
session?.sessionLocation?.uuid,
status,
session.user.systemId,
);

const [showOverlay, setShowOverlay] = useState(false);
const [view, setView] = useState('');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,47 +86,49 @@ export interface ChildLocation {
links: Link[];
}

export function usePatientQueuesList(currentQueueLocationUuid: string, status: string) {
export function usePatientQueuesList(currentQueueLocationUuid: string, status: string, provider: string) {
const apiUrl = `/ws/rest/v1/patientqueue?v=full&status=${status}&room=${currentQueueLocationUuid}`;
return usePatientQueueRequest(apiUrl);
return usePatientQueueRequest(apiUrl, provider);
}

export function usePatientQueueRequest(apiUrl: string) {
export function usePatientQueueRequest(apiUrl: string, provider) {
const { data, error, isLoading, isValidating, mutate } = useSWR<{ data: { results: Array<PatientQueue> } }, Error>(
apiUrl,
openmrsFetch,
{ refreshInterval: 3000 },
);

const mapppedQueues = data?.data?.results.map((queue: PatientQueue) => {
return {
...queue,
id: queue.uuid,
name: queue.patient?.person.display,
provider: queue.provider?.person.display,
patientUuid: queue.patient?.uuid,
priorityComment: queue.priorityComment,
priority: queue.priorityComment === 'Urgent' ? 'Priority' : queue.priorityComment,
priorityLevel: queue.priority,
waitTime: queue.dateCreated ? `${dayjs().diff(dayjs(queue.dateCreated), 'minutes')}` : '--',
status: queue.status,
patientAge: queue.patient?.person?.age,
patientSex: queue.patient?.person?.gender === 'M' ? 'MALE' : 'FEMALE',
patientDob: queue.patient?.person?.birthdate
? formatDate(parseDate(queue.patient.person.birthdate), { time: false })
: '--',
identifiers: queue.patient?.identifiers,
locationFrom: queue.locationFrom?.uuid,
locationTo: queue.locationTo?.uuid,
locationToName: queue.locationTo?.name,
queueRoom: queue.locationTo?.display,
visitNumber: queue.visitNumber,
dateCreated: queue.dateCreated,
creatorUuid: queue.creator?.uuid,
creatorUsername: queue.creator?.username,
creatorDisplay: queue.creator?.display,
};
});
const mapppedQueues = data?.data?.results
.filter((item) => item.provider.identifier !== '' && item.provider.identifier === provider)
.map((queue: PatientQueue) => {
return {
...queue,
id: queue.uuid,
name: queue.patient?.person.display,
patientUuid: queue.patient?.uuid,
provider: queue.provider?.person.display,
priorityComment: queue.priorityComment,
priority: queue.priorityComment === 'Urgent' ? 'Priority' : queue.priorityComment,
priorityLevel: queue.priority,
waitTime: queue.dateCreated ? `${dayjs().diff(dayjs(queue.dateCreated), 'minutes')}` : '--',
status: queue.status,
patientAge: queue.patient?.person?.age,
patientSex: queue.patient?.person?.gender === 'M' ? 'MALE' : 'FEMALE',
patientDob: queue.patient?.person?.birthdate
? formatDate(parseDate(queue.patient.person.birthdate), { time: false })
: '--',
identifiers: queue.patient?.identifiers,
locationFrom: queue.locationFrom?.uuid,
locationTo: queue.locationTo?.uuid,
locationToName: queue.locationTo?.name,
queueRoom: queue.locationTo?.display,
visitNumber: queue.visitNumber,
dateCreated: queue.dateCreated,
creatorUuid: queue.creator?.uuid,
creatorUsername: queue.creator?.username,
creatorDisplay: queue.creator?.display,
};
});

return {
patientQueueEntries: mapppedQueues || [],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { useEffect, useState } from 'react';

export function usePatientQueuesListByStatus(status: string) {
const apiUrl = `/ws/rest/v1/patientqueue?v=full&status=${status}`;
return usePatientQueueRequest(apiUrl);
return usePatientQueueRequest(apiUrl, '');
}

export function usePatientQueuesByParentLocation(status: string) {
Expand Down

0 comments on commit 22e47f6

Please sign in to comment.