"use client"; import { QUERY_KEY } from "@/constant/config/enum"; import { httpRequest } from "@/services"; import prescriptionServices, { PrescriptionDetail, } from "@/services/prescriptionServices"; import consultationServices, { ConsultationItem, } from "@/services/consultationServices"; import { useQuery } from "@tanstack/react-query"; import Image from "next/image"; import { useParams, useRouter } from "next/navigation"; import React, { useState } from "react"; import CustomPopup from "@/components/customs/custom-popup"; import { ArrowLeft } from "lucide-react"; const DetailPrescription = () => { const router = useRouter(); const params = useParams(); const PrescriptionId = params?.id as string; const [openImagePreview, setOpenImagePreview] = useState(false); const prescriptionDetailQuery = useQuery({ queryKey: [QUERY_KEY.chi_tiet_don_thuoc, PrescriptionId], enabled: !!PrescriptionId, queryFn: async () => { const res = await httpRequest({ showMessageFailed: true, http: prescriptionServices.detailPrescription(PrescriptionId), }); return ( res || { id: "", examinationSessionSpecialtyId: "", prescriptionCode: "", prescriptionImg: null, notes: "", createdBy: "", items: [], } ); }, }); const data = prescriptionDetailQuery.data; const specialtyListQuery = useQuery({ queryKey: [QUERY_KEY.examination_specialty_list], enabled: !!data?.examinationSessionSpecialtyId, queryFn: async () => { const res = await httpRequest<{ items: ConsultationItem[]; }>({ showMessageFailed: false, http: consultationServices.getConsultations({ PageSize: 1000 }), }); return res?.items || []; }, }); const specialtyName = React.useMemo(() => { const specialtyId = data?.examinationSessionSpecialtyId; if (!specialtyId) return ""; const items = specialtyListQuery.data || []; for (const session of items) { const found = session.specialtyClinics?.find((s) => s.id === specialtyId); if (found) return found.specialtyName || ""; } return ""; }, [data?.examinationSessionSpecialtyId, specialtyListQuery.data]); return (
router.back()} >

Chi tiết đơn thuốc

{/* LOADING */} {prescriptionDetailQuery.isLoading &&

Đang tải...

} {/* ERROR */} {prescriptionDetailQuery.isError && (

Lỗi tải dữ liệu

)} {/* CONTENT */} {data && (
Mã đơn thuốc: {data.prescriptionCode}
Chuyên khoa:{" "} {specialtyName || data.examinationSessionSpecialtyId || "---"}
Ghi chú: {data.notes || "---"}
{/* IMAGE */}
Ảnh đơn thuốc:
{data.prescriptionImg ? ( <> prescription setOpenImagePreview(true)} unoptimized /> {/* IMAGE PREVIEW POPUP */} setOpenImagePreview(false)} >
prescription preview
) : ( Không có ảnh )}
{/* ITEMS */}
Danh sách thuốc:
{data.items?.length ? ( data.items.map((item, index) => (

Tên thuốc: {item.medicineName}

Liều lượng: {item.dosage}

Tần suất: {item.frequency}

Thời gian: {item.duration}

Hướng dẫn: {item.instructions}

)) ) : (

Không có thuốc

)}
)}
); }; export default DetailPrescription;