import { Table } from "flowbite-react"; import { useLocation, useOutletContext, useParams } from "react-router-dom"; import Modals from "../../components/Modals"; import { useEffect, useState } from "react"; import { useDispatch, useSelector } from "react-redux"; import { getPeriksa } from "../../config/Redux/Action/periksaAction"; import { getAllPasien, getDaftarPoli, getDaftarPoliByPasienId, getDetailPriksa, getPasienById, } from "../../config/Redux/Action"; const RiwayatPasien = () => { const pathName = useLocation().pathname; const [openModal, setOpenModal] = useState(false); const [role] = useOutletContext(); const dispatch = useDispatch(); const { periksa } = useSelector((state) => state.periksaReducer); const { id } = useParams(); const { daftarPoli, daftarPoliByPasienId } = useSelector( (state) => state.daftarPoliReducer ); const { detailPriksa } = useSelector((state) => state.detailPeriksaReducer); const { pasienAll, pasienById } = useSelector((state) => state.pasienReducer); const [riwayat, setRiwayat] = useState([]); const [pasien, setPasien] = useState([]); const [idPasien, setIdPasien] = useState(""); const handleOpenModal = (id) => { setOpenModal(true); setIdPasien(id); }; const formatPriceInRupiah = (price) => { return new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(price); }; useEffect(() => { dispatch(getPeriksa()); dispatch(getDaftarPoli()); }, [dispatch]); useEffect(() => { dispatch(getAllPasien()); }, [dispatch]); useEffect(() => { if (idPasien) { dispatch(getDaftarPoliByPasienId(idPasien)); } }, [dispatch, idPasien]); useEffect(() => { const matchedPatients = periksa .map((item) => { return daftarPoli.find( (item2) => item.id_daftar_poli === item2.id && item2.jadwal_periksa.id_dokter === id ); }) .filter((matchedItem) => matchedItem !== undefined); const matchedPatients2 = matchedPatients .map((item) => { return pasienAll.find((item2) => item2.id === item.id_pasien); }) .filter((matchedItem) => matchedItem !== undefined); const uniquePatients = [ ...new Map(matchedPatients2.map((item) => [item.id, item])).values(), ]; setPasien(uniquePatients || []); return () => { setPasien([]); }; }, [pasienAll, daftarPoli, id, periksa]); useEffect(() => { if (daftarPoliByPasienId.length > 0) { const filteredRiwayat = periksa.filter((item2) => daftarPoliByPasienId.some( (item) => item.id === item2.id_daftar_poli && item2?.daftar_poli?.jadwal_periksa?.id_dokter === id && item.id_pasien === idPasien ) ); setRiwayat(filteredRiwayat); } }, [daftarPoliByPasienId, periksa, id, idPasien]); useEffect(() => { if (riwayat.length > 0) { dispatch(getDetailPriksa()); } }, [riwayat, dispatch]); useEffect(() => { if (idPasien) { dispatch(getPasienById(idPasien)); } }, [dispatch, idPasien]); useEffect(() => { if (role !== "dokter") { window.location.href = "/"; } }, [role]); return (

Riwayat Pasien

{pathName}

Daftar Riwayat Pasien

No Nama Alamat No. KTP No. HP No. RM Aksi {pasien.map((item, index) => { return ( {index + 1} {item.nama} {item.alamat} {item.no_ktp} {item.no_hp} {item.no_rm} ); })}
No Tanggal Periksa Nama Pasien Nama Dokter Keluhan Catatan Obat Biaya Priksa Total Biaya {riwayat?.map((item, index) => ( {index + 1} {item.tanggal} {item.daftar_poli?.pasien?.nama} Dr. {item.daftar_poli?.jadwal_periksa?.dokter?.nama} {item?.daftar_poli?.keluhan} {item?.catatan} {detailPriksa?.map((item2, index) => { if (item2.id_periksa === item.id) { return (
{item2?.obat?.nama_obat} -{" "} {formatPriceInRupiah(item2?.obat?.harga)}
); } })}
{formatPriceInRupiah(150000)} {formatPriceInRupiah(item.biaya_periksa)}
))}
} />
); }; export default RiwayatPasien;