import type {Route} from "../../../.react-router/types/app/pages/dashboard/+types/DoctorTreatment"; import {useEffect, useMemo, useState} from "react"; import {BookingCategory, UserPermissionLevel} from "~/utils/hms_enums.ts"; import {useNavigate, useOutletContext} from "react-router"; import { type DoctorTeamInfo, type OutletContextType, type PatientBookingInfoWithAdmission, SORT_SYMBOLS, WardTypes } from "~/utils/models.ts"; import {Accordion, ActionIcon, Badge, Button, Card, Group, Modal, Select, Stack, Table, Text, Textarea} from "@mantine/core"; import {apiDoctorTreat, apiGetDoctorAppointments, apiGetTeamList, apiGetWardList} from "~/utils/hms_api.ts"; import {showErrorMessage, showInfoMessage} from "~/utils/utils.ts"; import {iconMStyle, marginLeftRight, marginTopBottom} from "~/styles.ts"; import {confirmCheckWardPatients} from "~/components/subs/confirms.tsx"; import {TruncatedText} from "~/components/subs/TruncatedText.tsx"; import InfoIcon from "mdi-react/InfoIcon"; import NoteEditIcon from "mdi-react/NoteEditIcon"; import {useForm} from "@mantine/form"; import {PatientInfoDisplay} from "~/components/subs/PatientInfoDisplay.tsx"; import FilterIcon from "mdi-react/FilterIcon"; import {ResponsiveTableContainer} from "~/components/subs/ResponsiveTableContainer.tsx"; import {TeamInfoDisplay} from "~/components/subs/TeamInfoDisplay.tsx"; export function meta({}: Route.MetaArgs) { return [ { title: "Doctor Treatment" }, { name: "description", content: "Record treatment information for patients" }, ]; } function TreatmentModal({ opened, onClose, appointmentId, patientName, patientId, onSuccess }: { opened: boolean; onClose: () => void; appointmentId: number; patientName: string; patientId: number; onSuccess: () => void; }) { const [loading, setLoading] = useState(false); const form = useForm({ initialValues: { treatment_info: '' }, validate: { treatment_info: (value) => (!value ? 'Treatment information is required' : null) } }); const handleSubmit = (values: typeof form.values) => { setLoading(true); // Current timestamp in seconds const currentTime = Math.floor(Date.now() / 1000); apiDoctorTreat( appointmentId, values.treatment_info, currentTime ).then(res => { if (res.success) { showInfoMessage("Treatment record saved successfully", "Success"); onSuccess(); onClose(); } else { showErrorMessage(res.message, "Failed to save treatment record"); } }) .catch(err => { showErrorMessage("Failed to save treatment record", "Error"); }) .finally(() => { setLoading(false); }); }; return ( Patient: