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:
);
}
export default function Component() {
const navigate = useNavigate();
const [loading, setLoading] = useState(true);
const [appointments, setAppointments] = useState([]);
const [wardMap, setWardMap] = useState