"use client"; import React, { useEffect, useState } from "react"; import { X } from "lucide-react"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import CustomButton from "@/components/customs/custom-button"; import FormCustom from "@/components/utils/FormCustom"; import InputForm from "@/components/utils/FormCustom/components/InputForm"; import TextArea from "@/components/utils/FormCustom/components/TextArea"; import { QUERY_KEY } from "@/constant/config/enum"; import { httpRequest } from "@/services"; import consultationServices, { ConsultationDetail, } from "@/services/consultationServices"; import { ContextFormCustom } from "@/components/utils/FormCustom/contexts"; interface PopupUpdateConsultationProps { id: string; onClose: () => void; } interface IUpdateConsul { chiefComplaint: string; symptomsText: string; vitalSigns: string; diagnosis: string; treatmentPlan: string; doctorNotes: string; } const defaultForm: IUpdateConsul = { chiefComplaint: "", symptomsText: "", vitalSigns: "", diagnosis: "", treatmentPlan: "", doctorNotes: "", }; const PopupUpdateConsultation = ({ id, onClose, }: PopupUpdateConsultationProps) => { const queryClient = useQueryClient(); const [form, setForm] = useState(defaultForm); const consulDetailQuery = useQuery({ queryKey: [QUERY_KEY.chi_tiet_phien_kham, id], enabled: !!id, queryFn: async () => { const res = await httpRequest({ showMessageFailed: true, http: consultationServices.detailConsultations(id), }); return ( res || { id: "", patientId: "", sessionCode: "", visitDate: "", status: 1, chiefComplaint: null, symptomsText: null, vitalSigns: null, diagnosis: null, treatmentPlan: null, doctorNotes: null, createdBy: "", isDeleted: false, } ); }, }); useEffect(() => { const consul = consulDetailQuery.data; if (!consul) return; setForm({ chiefComplaint: consul.chiefComplaint || "", symptomsText: consul.symptomsText || "", vitalSigns: consul.vitalSigns || "", diagnosis: consul.diagnosis || "", treatmentPlan: consul.treatmentPlan || "", doctorNotes: consul.doctorNotes || "", }); }, [consulDetailQuery.data]); /* ========================= SUBMIT ========================= */ const updateConsultationMutation = useMutation({ mutationFn: async () => { return httpRequest({ showMessageFailed: true, showMessageSuccess: true, msgSuccess: "Cập nhật phiên khám thành công!", http: consultationServices.putConsultations(id, { chiefComplaint: form.chiefComplaint, symptomsText: form.symptomsText, vitalSigns: form.vitalSigns, diagnosis: form.diagnosis, treatmentPlan: form.treatmentPlan, doctorNotes: form.doctorNotes, }), }); }, onSuccess(data) { if (!data) return; queryClient.invalidateQueries({ queryKey: [QUERY_KEY.table_list_consultation], }); queryClient.invalidateQueries({ queryKey: [QUERY_KEY.chi_tiet_phien_kham, id], }); onClose(); }, }); const handleSubmit = () => { updateConsultationMutation.mutate(); }; if (consulDetailQuery.isLoading) { return (
Đang tải dữ liệu...
); } return (
{/* CLOSE */} {/* HEADER */}

Chỉnh sửa phiên khám

{/* BODY */}