Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/App.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import InactivityHandler from "./helper/inactivityhandler";
import Examination from "./Modules/Examination/examination";
import Database from "./Modules/Database/database";
import ProgrammeCurriculumRoutes from "./Modules/Program_curriculum/programmCurriculum";
import { HealthCenter } from "./Modules/Health Center/index";
import NotFoundPage from "./components/NotFoundPage";

const theme = createTheme({
Expand Down Expand Up @@ -82,6 +83,7 @@ export default function App() {
<Route path="/reset-password" element={<ForgotPassword />} />
<Route path="/examination/*" element={<Examination />} />
<Route path="/database/*" element={<Database />} />
<Route path="/healthcenter/*" element={<HealthCenter />} />
<Route path="*" element={<NotFoundPage />} />
</Routes>
</MantineProvider>
Expand Down
22 changes: 5 additions & 17 deletions src/Modules/Health Center/Compounder/Announcement/Announements.jsx
Original file line number Diff line number Diff line change
@@ -1,30 +1,18 @@
import { Button, Paper, Textarea, Title } from "@mantine/core";
import axios from "axios";
import { useState } from "react";
import NavCom from "../NavCom";
import { compounderRoute } from "../../../../routes/health_center";
import AnnounceNavBar from "./announPath";
import CustomBreadcrumbs from "../../../../components/Breadcrumbs";
import CustomBreadcrumbs from "../../components/common/Breadcrumbs";
import { createAnnouncementApi } from "../../services/api";

function CompAnnounements() {
const [announce, setAnnounce] = useState("");

const make_announcement = async () => {
const token = localStorage.getItem("authToken");
try {
const response = await axios.post(
compounderRoute,
{ announcement: announce, comp_announce: 1 },
{
headers: {
Authorization: `Token ${token}`,
},
},
);
console.log(response);
if (response.data.status === 1) {
alert("announcement done");
}
await createAnnouncementApi({ message: announce });
alert("announcement published");
setAnnounce("");
} catch (err) {
console.log(err);
}
Expand Down
18 changes: 4 additions & 14 deletions src/Modules/Health Center/Compounder/Announcement/Record.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,31 +11,21 @@ import {
Box,
Divider,
} from "@mantine/core";
import axios from "axios";
import { compounderRoute } from "../../../../routes/health_center";
import NavCom from "../NavCom";
import AnnounceNavBar from "./announPath";
import CustomBreadcrumbs from "../../../../components/Breadcrumbs";
import CustomBreadcrumbs from "../../components/common/Breadcrumbs";
import { getAnnouncementsApi } from "../../services/api";

function Record() {
const [test, StateTest] = useState({ announcements: [] });
const [loading, setLoading] = useState(true);

useEffect(() => {
const get_announcement = async () => {
const token = localStorage.getItem("authToken");
try {
setLoading(true);
const response = await axios.post(
compounderRoute,
{ get_annoucements: 1 },
{
headers: {
Authorization: `Token ${token}`,
},
},
);
StateTest(response.data);
const response = await getAnnouncementsApi();
StateTest({ announcements: response.data || [] });
} catch (err) {
console.log(err);
} finally {
Expand Down
149 changes: 149 additions & 0 deletions src/Modules/Health Center/Compounder/CompounderDashboard.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
import React from "react";
import {
Container,
Stack,
Title,
Grid,
Card,
Text,
Button,
Group,
} from "@mantine/core";
import {
Users,
Package,
ClipboardText,
Calendar,
Megaphone,
Heart,
FileText,
} from "@phosphor-icons/react";
import { useNavigate } from "react-router-dom";

export default function CompounderDashboard() {
const navigate = useNavigate();

const cards = [
{
icon: <Users size={32} weight="duotone" color="#15abff" />,
title: "Patient Log",
description: "Manage patient medical records and history",
action: () => navigate("/healthcenter/compounder/patient-log/history"),
},
{
icon: <Package size={32} weight="duotone" color="#15abff" />,
title: "Manage Stock",
description: "Manage inventory and track medicine stock",
action: () => navigate("/healthcenter/compounder/manage-stock"),
},
{
icon: <Calendar size={32} weight="duotone" color="#15abff" />,
title: "Schedule",
description: "Manage doctor and pathologist schedules",
action: () => navigate("/healthcenter/compounder/schedule"),
},
{
icon: <Users size={32} weight="duotone" color="#15abff" />,
title: "Doctor/Pathologists",
description: "Add and manage doctors and pathologists",
action: () => navigate("/healthcenter/compounder/docpath"),
},
{
icon: <ClipboardText size={32} weight="duotone" color="#15abff" />,
title: "Feedback",
description: "Review and respond to patient feedback",
action: () => navigate("/healthcenter/compounder/feedback"),
},
{
icon: <Megaphone size={32} weight="duotone" color="#15abff" />,
title: "Make Announcements",
description: "Publish health center announcements",
action: () => navigate("/healthcenter/compounder/announcement"),
},
{
icon: <Heart size={32} weight="duotone" color="#15abff" />,
title: "Medical Relief",
description: "Review and process medical relief applications",
action: () => navigate("/healthcenter/compounder/medical-relief/inbox"),
},
{
icon: <FileText size={32} weight="duotone" color="#15abff" />,
title: "Requisitions",
description: "Manage medical requisitions and requests",
action: () => navigate("/healthcenter/compounder/requisitions"),
},
];

return (
<Container size="xl" py="xl">
<Stack gap="lg">
<div>
<Title order={1} size="h2" mb="xs">
Health Center Management Dashboard
</Title>
<Text c="dimmed">Manage operations, staff, and patient records</Text>
</div>

<Grid gutter="lg">
{cards.map((card, idx) => (
<Grid.Col key={idx} span={{ base: 12, sm: 6, md: 4 }}>
<Card
shadow="sm"
padding="lg"
radius="md"
withBorder
style={{ cursor: "pointer", transition: "all 0.3s ease" }}
onMouseEnter={(e) => {
e.currentTarget.style.boxShadow =
"0 8px 24px rgba(0,0,0,0.12)";
e.currentTarget.style.transform = "translateY(-4px)";
}}
onMouseLeave={(e) => {
e.currentTarget.style.boxShadow =
"0 1px 3px rgba(0,0,0,0.12)";
e.currentTarget.style.transform = "translateY(0)";
}}
>
<Group justify="center" mb="md">
{card.icon}
</Group>
<Text fw={600} size="md" ta="center" mb="xs">
{card.title}
</Text>
<Text size="sm" c="dimmed" ta="center" mb="md">
{card.description}
</Text>
<Button
variant="light"
fullWidth
color="#15abff"
onClick={card.action}
>
Manage
</Button>
</Card>
</Grid.Col>
))}
</Grid>

<Card shadow="sm" padding="lg" radius="md" withBorder mt="lg">
<Title order={3} mb="md">
Quick Statistics
</Title>
<Stack gap="sm">
<Text size="sm">
<strong>Current Status:</strong> Operational
</Text>
<Text size="sm">
<strong>Operating Hours:</strong> Monday - Friday, 9:00 AM - 5:00
PM
</Text>
<Text size="sm">
<strong>Staff Support:</strong> Available on extension 2421
</Text>
</Stack>
</Card>
</Stack>
</Container>
);
}
5 changes: 4 additions & 1 deletion src/Modules/Health Center/Compounder/Doctor/adddoctor.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,10 @@ export default function Adddoctor() {
},
);
console.log(response);
alert("Doctor added successfully");
if (response?.data?.status === 1) {
alert("Doctor added successfully");
window.location.reload();
}
} catch (err) {
console.log(err);
}
Expand Down
5 changes: 4 additions & 1 deletion src/Modules/Health Center/Compounder/Doctor/addpath.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,10 @@ export default function Addpath() {
},
);
console.log(response);
alert("Pathologist added successfully");
if (response?.data?.status === 1) {
alert("Pathologist added successfully");
window.location.reload();
}
} catch (err) {
console.log(err);
}
Expand Down
2 changes: 1 addition & 1 deletion src/Modules/Health Center/Compounder/Doctor/docpath.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import { IconPrinter, IconPhone, IconStethoscope } from "@tabler/icons-react";
import axios from "axios";
import NavCom from "../NavCom";
import Changenav from "./changenav";
import CustomBreadcrumbs from "../../../../components/Breadcrumbs";
import CustomBreadcrumbs from "../../components/common/Breadcrumbs";
import { compounderRoute } from "../../../../routes/health_center";
import Adddoctor from "./adddoctor";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import { IconPrinter, IconPhone, IconMicroscope } from "@tabler/icons-react";
import axios from "axios";
import NavCom from "../NavCom";
import Changenav from "./changenav";
import CustomBreadcrumbs from "../../../../components/Breadcrumbs";
import CustomBreadcrumbs from "../../components/common/Breadcrumbs";
import { compounderRoute } from "../../../../routes/health_center";
import Addpath from "./addpath";

Expand Down
7 changes: 5 additions & 2 deletions src/Modules/Health Center/Compounder/Doctor/removedoctor.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Button, Paper, Flex, Title } from "@mantine/core";
import axios from "axios";
import NavCom from "../NavCom";
import Changenav from "./changenav";
import CustomBreadcrumbs from "../../../../components/Breadcrumbs";
import CustomBreadcrumbs from "../../components/common/Breadcrumbs";
import { compounderRoute } from "../../../../routes/health_center";

export default function Removedoctor() {
Expand Down Expand Up @@ -58,7 +58,10 @@ export default function Removedoctor() {
},
);
console.log(response);
alert("Doctor Removed Successfully");
if (response?.data?.status === 1) {
alert("Doctor Removed Successfully");
window.location.reload();
}
} catch (err) {
console.log(err);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Button, Paper, Flex, Title } from "@mantine/core";
import axios from "axios";
import NavCom from "../NavCom";
import Changenav from "./changenav";
import CustomBreadcrumbs from "../../../../components/Breadcrumbs";
import CustomBreadcrumbs from "../../components/common/Breadcrumbs";
import { compounderRoute } from "../../../../routes/health_center";

export default function Removepath() {
Expand Down Expand Up @@ -53,7 +53,10 @@ export default function Removepath() {
},
);
console.log(response);
alert("Pathologist Removed Successfully");
if (response?.data?.status === 1) {
alert("Pathologist Removed Successfully");
window.location.reload();
}
} catch (err) {
console.log(err);
}
Expand Down
7 changes: 5 additions & 2 deletions src/Modules/Health Center/Compounder/Feedback/feedback.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import axios from "axios";
import { Paper, Title, Loader, Text, Container, Box } from "@mantine/core";
import NavCom from "../NavCom";
import { compounderRoute } from "../../../../routes/health_center";
import CustomBreadcrumbs from "../../../../components/Breadcrumbs";
import CustomBreadcrumbs from "../../components/common/Breadcrumbs";

function FeedbackTable() {
const [feedbackData, setFeedbackData] = useState({ complaints: [] });
Expand All @@ -23,7 +23,10 @@ function FeedbackTable() {
},
},
);
setFeedbackData(response.data);
const complaints = Array.isArray(response?.data?.complaints)
? response.data.complaints
: [];
setFeedbackData({ complaints });
setError(null);
} catch (err) {
console.error("Error fetching feedback:", err);
Expand Down
Loading