Skip to content

Commit

Permalink
(fix) Fixed missing identifer in appointment lists
Browse files Browse the repository at this point in the history
  • Loading branch information
CynthiaKamau committed Dec 4, 2023
1 parent 30d0cc5 commit 9441791
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import { useUnscheduledAppointments } from '../../hooks/useUnscheduledAppointmen
import { downloadUnscheduledAppointments } from '../../helpers/excel';
import { EmptyState } from '../../empty-state/empty-state.component';
import { getPageSizes, useSearchResults } from '../utils';
import { configSchema } from '../../config-schema';

const UnscheduledAppointments: React.FC = () => {
const { t } = useTranslation();
Expand Down Expand Up @@ -51,17 +52,16 @@ const UnscheduledAppointments: React.FC = () => {
];

const { results, currentPage, goTo } = usePagination(searchResults, pageSize);

const rowData = results?.map((visit) => ({
id: `${visit.uuid}`,
name: (
<ConfigurableLink style={{ textDecoration: 'none' }} to={`\${openmrsSpaBase}/patient/${visit.uuid}/chart`}>
{visit.name}
</ConfigurableLink>
),
identifier: visit.identifier,
gender: visit.gender === 'F' ? 'Female' : 'Male',
phoneNumber: visit.phoneNumber === '' ? '--' : visit.phoneNumber,
identifier: visit?.identifier,
}));

if (isLoading) {
Expand Down
9 changes: 7 additions & 2 deletions packages/esm-appointments-app/src/helpers/functions.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { AppointmentSummary, Appointment } from '../types';
import { formatDate, parseDate, formatDatetime } from '@openmrs/esm-framework';
import dayjs, { Dayjs } from 'dayjs';
import { configSchema } from '../config-schema';

export const getHighestAppointmentServiceLoad = (appointmentSummary: Array<any> = []) => {
const groupedAppointments = appointmentSummary?.map(({ countMap, serviceName }) => ({
Expand Down Expand Up @@ -63,7 +64,9 @@ export const mapAppointmentProperties = (appointment: Appointment, t?: Function)
comments: appointment.comments ? appointment.comments : '--',
appointmentNumber: appointment.appointmentNumber,
color: appointment?.service?.color ?? '',
identifier: appointment.patient?.identifier,
identifier: appointment?.patient?.identifiers?.find(
(identifier) => identifier.identifierName === configSchema.patientIdentifierType._default,
).identifier,
duration: appointment.service?.durationMins
? appointment?.service?.durationMins + t('minutes', 'min')
: getAppointmentDuration(appointment.startDateTime, appointment.endDateTime),
Expand All @@ -90,7 +93,9 @@ export const getAppointment = (appointment: Appointment) => {
comments: appointment.comments ? appointment.comments : '--',
appointmentNumber: appointment.appointmentNumber,
providers: appointment.providers,
identifier: appointment.patient.identifier,
identifier: appointment?.patient?.identifiers?.find(
(identifier) => identifier.identifierName === configSchema.patientIdentifierType._default,
).identifier,
};
return formattedAppointment;
};
Expand Down
10 changes: 7 additions & 3 deletions packages/esm-appointments-app/src/hooks/useAppointmentList.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import useSWR from 'swr';
import { openmrsFetch } from '@openmrs/esm-framework';
import { AppointmentService, Provider } from '../types';
import { AppointmentService, Identifier, Provider } from '../types';
import { useAppointmentDate } from '../helpers';
import dayjs from 'dayjs';
import { configSchema } from '../config-schema';

interface AppointmentPatientList {
uuid: string;
Expand All @@ -14,11 +15,12 @@ interface AppointmentPatientList {
name: string;
uuid: string;
age: number;
identifier: string;
identifiers?: Array<Identifier>;
};
providers: Array<Provider>;
service: AppointmentService;
startDateTime: string;
identifier: string;
}

export const useAppointmentList = (appointmentStatus: string, date?: string) => {
Expand Down Expand Up @@ -68,7 +70,9 @@ function toAppointmentObject(appointment: AppointmentPatientList) {
return {
name: appointment.patient.name,
patientUuid: appointment.patient.uuid,
identifier: appointment.patient.identifier,
identifier: appointment?.patient?.identifiers?.find(
(identifier) => identifier.identifierName === configSchema.patientIdentifierType._default,
).identifier,
dateTime: appointment.startDateTime,
serviceType: appointment.service?.name,
provider: appointment?.providers[0]?.['name'] ?? '',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,43 @@
import { openmrsFetch } from '@openmrs/esm-framework';
import useSWR from 'swr';
import { useAppointmentDate } from '../helpers';
import { mapAppointmentProperties, useAppointmentDate } from '../helpers';
import { Identifier } from '../types';
import { configSchema } from '../config-schema';

export interface Response {
age: number;
dob: number;
gender: string;
identifier: string;
identifiers: Array<Identifier>;
name: string;
uuid: string;
phoneNumber: string;
visit: {
stopDateTime: Date;
startDateTime: Date;
visitType: string;
};
}

export function useUnscheduledAppointments() {
const { currentAppointmentDate } = useAppointmentDate();
const url = `/ws/rest/v1/appointment/unScheduledAppointment?forDate=${currentAppointmentDate}`;
const { data, error, isLoading } = useSWR<{ data: Array<Response> }>(url, openmrsFetch, { errorRetryCount: 2 });
return { isLoading, data: data?.data ?? [], error };
const appointments = data?.data?.map((appointment) => toAppointmentObject(appointment));

return { isLoading, data: appointments ?? [], error };
}

function toAppointmentObject(appointment: Response) {
return {
name: appointment.name,
identifier: appointment?.identifiers?.find(
(identifier) => identifier.identifierName === configSchema.patientIdentifierType._default,
).identifier,
dateTime: appointment?.visit.startDateTime,
gender: appointment.gender,
phoneNumber: appointment.phoneNumber,
age: appointment.age,
uuid: appointment.uuid,
};
}
7 changes: 6 additions & 1 deletion packages/esm-appointments-app/src/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export interface Appointment {
endDateTime: Date | number | any;
location: OpenmrsResource;
patient: {
identifier: string;
identifiers: Array<Identifier>;
name: string;
uuid: string;
age?: string;
Expand Down Expand Up @@ -194,3 +194,8 @@ export enum AppointmentTypes {
}

export type CalendarType = 'daily' | 'weekly' | 'monthly';

export interface Identifier {
identifier: string;
identifierName?: string;
}

0 comments on commit 9441791

Please sign in to comment.