source: frontend/src/App.js@ 84249b1

Last change on this file since 84249b1 was f05de05, checked in by MBK <marija.karapandzova@…>, 4 months ago

Add pages and routing for lab tests, procedures and billing with api services

  • Property mode set to 100644
File size: 5.1 KB
Line 
1import React, { useEffect, useState } from 'react';
2import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom';
3import Navbar from './components/Navbar';
4import Dashboard from './pages/Dashboard';
5import PatientList from './pages/patients/PatientList';
6import PatientDetail from './pages/patients/PatientDetail';
7import PatientForm from './pages/patients/PatientForm';
8import DoctorList from './pages/doctors/DoctorList';
9import DoctorDetail from './pages/doctors/DoctorDetail';
10import DoctorForm from './pages/doctors/DoctorForm';
11import AppointmentList from './pages/appointments/AppointmentList';
12import AppointmentForm from './pages/appointments/AppointmentForm';
13import MedicalRecordList from './pages/medical-records/MedicalRecordList';
14import MedicalRecordDetail from './pages/medical-records/MedicalRecordDetail';
15import BillingList from './pages/billing/BillingList';
16import BillingDetail from './pages/billing/BillingDetail';
17import ReferralList from './pages/referrals/ReferralList';
18import MedicalReportList from './pages/medical-reports/MedicalReportList';
19import LabTestList from './pages/lab-tests/LabTestList';
20import LabResultForm from './pages/lab-tests/LabResultForm';
21import ProcedureList from './pages/procedures/ProcedureList';
22import ProcedureResultForm from './pages/procedures/ProcedureResultForm';
23import DepartmentList from './pages/departments/DepartmentList';
24import DepartmentDetail from './pages/departments/DepartmentDetail';
25import DoctorsByDepartment from './pages/departments/DoctorsByDepartment';
26
27function App() {
28 const [user, setUser] = useState(null);
29
30 useEffect(() => {
31 const userStr = localStorage.getItem('user');
32 if (userStr) {
33 setUser(JSON.parse(userStr));
34 }
35 }, []);
36
37 return (
38 <Router>
39 <div className="min-h-screen bg-gray-50">
40 {user && <Navbar />}
41 <main className={user ? "container mx-auto px-4 py-8" : ""}>
42 <Routes>
43 <Route path="/login" element={<Login />} />
44
45 <Route path="/" element={
46 <ProtectedRoute>
47 <Dashboard />
48 </ProtectedRoute>
49 } />
50
51 {/* Patient Routes */}
52 <Route path="/patients" element={<ProtectedRoute><PatientList /></ProtectedRoute>} />
53 <Route path="/patients/new" element={<ProtectedRoute><PatientForm /></ProtectedRoute>} />
54 <Route path="/patients/:id" element={<ProtectedRoute><PatientDetail /></ProtectedRoute>} />
55 <Route path="/patients/:id/edit" element={<ProtectedRoute><PatientForm /></ProtectedRoute>} />
56
57 {/* Doctor Routes */}
58 <Route path="/doctors" element={<ProtectedRoute><DoctorList /></ProtectedRoute>} />
59 <Route path="/doctors/new" element={<ProtectedRoute><DoctorForm /></ProtectedRoute>} />
60 <Route path="/doctors/:id" element={<ProtectedRoute><DoctorDetail /></ProtectedRoute>} />
61 <Route path="/doctors/:id/edit" element={<ProtectedRoute><DoctorForm /></ProtectedRoute>} />
62
63 {/* Department Routes */}
64 <Route path="/departments" element={<ProtectedRoute><DepartmentList /></ProtectedRoute>} />
65 <Route path="/departments/:departmentId" element={<ProtectedRoute><DepartmentDetail /></ProtectedRoute>} />
66 <Route path="/departments/:departmentId/doctors" element={<ProtectedRoute><DoctorsByDepartment /></ProtectedRoute>} />
67
68 {/* Appointment Routes */}
69 <Route path="/appointments" element={<ProtectedRoute><AppointmentList /></ProtectedRoute>} />
70 <Route path="/appointments/new" element={<ProtectedRoute><AppointmentForm /></ProtectedRoute>} />
71
72 {/* Medical Record Routes */}
73 <Route path="/medical-records" element={<ProtectedRoute><MedicalRecordList /></ProtectedRoute>} />
74 <Route path="/medical-records/:id" element={<ProtectedRoute><MedicalRecordDetail /></ProtectedRoute>} />
75
76 {/* Medical Report Routes */}
77 <Route path="/medical-reports" element={<ProtectedRoute><MedicalReportList /></ProtectedRoute>} />
78
79 {/* Referral Routes */}
80 <Route path="/referrals" element={<ProtectedRoute><ReferralList /></ProtectedRoute>} />
81
82 {/* Lab Test Routes */}
83 <Route path="/lab-tests" element={<ProtectedRoute><LabTestList /></ProtectedRoute>} />
84 <Route path="/lab-tests/results" element={<ProtectedRoute><LabResultForm /></ProtectedRoute>} />
85
86 {/* Procedure Routes */}
87 <Route path="/procedures" element={<ProtectedRoute><ProcedureList /></ProtectedRoute>} />
88 <Route path="/procedures/results" element={<ProtectedRoute><ProcedureResultForm /></ProtectedRoute>} />
89
90 {/* Billing Routes */}
91 <Route path="/billing" element={<ProtectedRoute><BillingList /></ProtectedRoute>} />
92 <Route path="/billing/:id" element={<ProtectedRoute><BillingDetail /></ProtectedRoute>} />
93
94
95 </Routes>
96 </main>
97 </div>
98 </Router>
99 );
100}
101
102export default App;
Note: See TracBrowser for help on using the repository browser.