date issue fixed3
This commit is contained in:
@@ -4,7 +4,7 @@ import { format, addDays, startOfToday, addMinutes } from "date-fns";
|
|||||||
import {
|
import {
|
||||||
parseLocalDateString,
|
parseLocalDateString,
|
||||||
formatLocalDate,
|
formatLocalDate,
|
||||||
normalizeToISOString
|
normalizeToISOString,
|
||||||
} from "@/utils/dateUtils";
|
} from "@/utils/dateUtils";
|
||||||
import { TopAppBar } from "@/components/layout/top-app-bar";
|
import { TopAppBar } from "@/components/layout/top-app-bar";
|
||||||
import { Sidebar } from "@/components/layout/sidebar";
|
import { Sidebar } from "@/components/layout/sidebar";
|
||||||
@@ -474,7 +474,10 @@ export default function AppointmentsPage() {
|
|||||||
patientName,
|
patientName,
|
||||||
staffId,
|
staffId,
|
||||||
status: apt.status ?? null, // Default to null if status is undefined
|
status: apt.status ?? null, // Default to null if status is undefined
|
||||||
date: apt.date instanceof Date ? apt.date.toISOString() : apt.date, // Ensure d
|
date:
|
||||||
|
apt.date instanceof Date
|
||||||
|
? formatLocalDate(apt.date)
|
||||||
|
: formatLocalDate(new Date(apt.date)),
|
||||||
};
|
};
|
||||||
|
|
||||||
return processed;
|
return processed;
|
||||||
@@ -889,8 +892,9 @@ export default function AppointmentsPage() {
|
|||||||
{
|
{
|
||||||
processedAppointments.filter(
|
processedAppointments.filter(
|
||||||
(apt) =>
|
(apt) =>
|
||||||
staffMembers.find((s) => Number(s.id) === apt.staffId)
|
staffMembers.find(
|
||||||
?.role === "doctor"
|
(s) => Number(s.id) === apt.staffId
|
||||||
|
)?.role === "doctor"
|
||||||
).length
|
).length
|
||||||
}
|
}
|
||||||
</span>
|
</span>
|
||||||
@@ -903,8 +907,9 @@ export default function AppointmentsPage() {
|
|||||||
{
|
{
|
||||||
processedAppointments.filter(
|
processedAppointments.filter(
|
||||||
(apt) =>
|
(apt) =>
|
||||||
staffMembers.find((s) => Number(s.id) === apt.staffId)
|
staffMembers.find(
|
||||||
?.role === "hygienist"
|
(s) => Number(s.id) === apt.staffId
|
||||||
|
)?.role === "hygienist"
|
||||||
).length
|
).length
|
||||||
}
|
}
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ import {
|
|||||||
clearTaskStatus,
|
clearTaskStatus,
|
||||||
} from "@/redux/slices/seleniumEligibilityCheckTaskSlice";
|
} from "@/redux/slices/seleniumEligibilityCheckTaskSlice";
|
||||||
import { SeleniumTaskBanner } from "@/components/claims/selenium-task-banner";
|
import { SeleniumTaskBanner } from "@/components/claims/selenium-task-banner";
|
||||||
import { formatLocalDate } from "@/utils/dateUtils";
|
import { formatLocalDate, parseLocalDateString } from "@/utils/dateUtils";
|
||||||
|
|
||||||
const PatientSchema = (
|
const PatientSchema = (
|
||||||
PatientUncheckedCreateInputObjectSchema as unknown as z.ZodObject<any>
|
PatientUncheckedCreateInputObjectSchema as unknown as z.ZodObject<any>
|
||||||
@@ -59,7 +59,6 @@ export default function InsuranceEligibilityPage() {
|
|||||||
(state) => state.seleniumEligibilityCheckTask
|
(state) => state.seleniumEligibilityCheckTask
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
const [selectedPatient, setSelectedPatient] = useState<Patient | null>(null);
|
const [selectedPatient, setSelectedPatient] = useState<Patient | null>(null);
|
||||||
|
|
||||||
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
|
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
|
||||||
@@ -80,7 +79,10 @@ export default function InsuranceEligibilityPage() {
|
|||||||
setFirstName(selectedPatient.firstName ?? "");
|
setFirstName(selectedPatient.firstName ?? "");
|
||||||
setLastName(selectedPatient.lastName ?? "");
|
setLastName(selectedPatient.lastName ?? "");
|
||||||
|
|
||||||
const dob = selectedPatient.dateOfBirth
|
const dob =
|
||||||
|
typeof selectedPatient.dateOfBirth === "string"
|
||||||
|
? parseLocalDateString(selectedPatient.dateOfBirth)
|
||||||
|
: selectedPatient.dateOfBirth;
|
||||||
setDateOfBirth(dob);
|
setDateOfBirth(dob);
|
||||||
} else {
|
} else {
|
||||||
setMemberId("");
|
setMemberId("");
|
||||||
@@ -111,13 +113,13 @@ export default function InsuranceEligibilityPage() {
|
|||||||
toast({
|
toast({
|
||||||
title: "Patient already exists",
|
title: "Patient already exists",
|
||||||
description: msg,
|
description: msg,
|
||||||
variant: "default",
|
variant: "default",
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
toast({
|
toast({
|
||||||
title: "Error",
|
title: "Error",
|
||||||
description: `Failed to add patient: ${msg}`,
|
description: `Failed to add patient: ${msg}`,
|
||||||
variant: "destructive",
|
variant: "destructive",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -166,54 +168,56 @@ export default function InsuranceEligibilityPage() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// handle selenium
|
// handle selenium
|
||||||
const handleSelenium = async () => {
|
const handleSelenium = async () => {
|
||||||
|
const formattedDob = dateOfBirth ? formatLocalDate(dateOfBirth) : "";
|
||||||
|
|
||||||
const formattedDob = dateOfBirth ? formatLocalDate(dateOfBirth) : "";
|
const data = {
|
||||||
|
memberId,
|
||||||
const data = {memberId, dateOfBirth: formattedDob, insuranceSiteKey: "MH", };
|
dateOfBirth: formattedDob,
|
||||||
try {
|
insuranceSiteKey: "MH",
|
||||||
dispatch(
|
|
||||||
setTaskStatus({
|
|
||||||
status: "pending",
|
|
||||||
message: "Sending Data to Selenium...",
|
|
||||||
})
|
|
||||||
);
|
|
||||||
const response = await apiRequest(
|
|
||||||
"POST",
|
|
||||||
"/api/insuranceEligibility/check",
|
|
||||||
{ data: JSON.stringify(data) }
|
|
||||||
);
|
|
||||||
const result = await response.json();
|
|
||||||
if (result.error) throw new Error(result.error);
|
|
||||||
|
|
||||||
dispatch(
|
|
||||||
setTaskStatus({
|
|
||||||
status: "success",
|
|
||||||
message: "Submitted to Selenium.",
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
toast({
|
|
||||||
title: "Selenium service notified",
|
|
||||||
description:
|
|
||||||
"Your claim data was successfully sent to Selenium, Waitinig for its response.",
|
|
||||||
variant: "default",
|
|
||||||
});
|
|
||||||
} catch (error: any) {
|
|
||||||
dispatch(
|
|
||||||
setTaskStatus({
|
|
||||||
status: "error",
|
|
||||||
message: error.message || "Selenium submission failed",
|
|
||||||
})
|
|
||||||
);
|
|
||||||
toast({
|
|
||||||
title: "Selenium service error",
|
|
||||||
description: error.message || "An error occurred.",
|
|
||||||
variant: "destructive",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
try {
|
||||||
|
dispatch(
|
||||||
|
setTaskStatus({
|
||||||
|
status: "pending",
|
||||||
|
message: "Sending Data to Selenium...",
|
||||||
|
})
|
||||||
|
);
|
||||||
|
const response = await apiRequest(
|
||||||
|
"POST",
|
||||||
|
"/api/insuranceEligibility/check",
|
||||||
|
{ data: JSON.stringify(data) }
|
||||||
|
);
|
||||||
|
const result = await response.json();
|
||||||
|
if (result.error) throw new Error(result.error);
|
||||||
|
|
||||||
|
dispatch(
|
||||||
|
setTaskStatus({
|
||||||
|
status: "success",
|
||||||
|
message: "Submitted to Selenium.",
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
toast({
|
||||||
|
title: "Selenium service notified",
|
||||||
|
description:
|
||||||
|
"Your claim data was successfully sent to Selenium, Waitinig for its response.",
|
||||||
|
variant: "default",
|
||||||
|
});
|
||||||
|
} catch (error: any) {
|
||||||
|
dispatch(
|
||||||
|
setTaskStatus({
|
||||||
|
status: "error",
|
||||||
|
message: error.message || "Selenium submission failed",
|
||||||
|
})
|
||||||
|
);
|
||||||
|
toast({
|
||||||
|
title: "Selenium service error",
|
||||||
|
description: error.message || "An error occurred.",
|
||||||
|
variant: "destructive",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const handleAddPatient = () => {
|
const handleAddPatient = () => {
|
||||||
const newPatient: InsertPatient = {
|
const newPatient: InsertPatient = {
|
||||||
@@ -227,7 +231,7 @@ export default function InsuranceEligibilityPage() {
|
|||||||
insuranceId: memberId,
|
insuranceId: memberId,
|
||||||
};
|
};
|
||||||
addPatientMutation.mutate(newPatient);
|
addPatientMutation.mutate(newPatient);
|
||||||
}
|
};
|
||||||
|
|
||||||
// Handle insurance provider button clicks
|
// Handle insurance provider button clicks
|
||||||
const handleMHButton = () => {
|
const handleMHButton = () => {
|
||||||
@@ -246,8 +250,6 @@ export default function InsuranceEligibilityPage() {
|
|||||||
handleAddPatient();
|
handleAddPatient();
|
||||||
|
|
||||||
handleSelenium();
|
handleSelenium();
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -261,11 +263,11 @@ export default function InsuranceEligibilityPage() {
|
|||||||
<TopAppBar toggleMobileMenu={toggleMobileMenu} />
|
<TopAppBar toggleMobileMenu={toggleMobileMenu} />
|
||||||
|
|
||||||
<SeleniumTaskBanner
|
<SeleniumTaskBanner
|
||||||
status={status}
|
status={status}
|
||||||
message={message}
|
message={message}
|
||||||
show={show}
|
show={show}
|
||||||
onClear={() => dispatch(clearTaskStatus())}
|
onClear={() => dispatch(clearTaskStatus())}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<main className="flex-1 overflow-auto p-6">
|
<main className="flex-1 overflow-auto p-6">
|
||||||
<div className="max-w-7xl mx-auto">
|
<div className="max-w-7xl mx-auto">
|
||||||
|
|||||||
Reference in New Issue
Block a user