diff --git a/backend/Controllers/doctorController.js b/backend/Controllers/doctorController.js index 0fbcb67..be874ca 100644 --- a/backend/Controllers/doctorController.js +++ b/backend/Controllers/doctorController.js @@ -236,6 +236,31 @@ exports.acceptContract = async (req, res) => { } }; +exports.addHealthRecord = async (req, res) => { + try { + const patientUsername = req.body.patientUsername; + const patient = await Patient.findOne({ username: patientUsername }); + + const medicines = req.body.medicines.map(medicine => ({ + name: medicine.name, + dosage: medicine.dosage, + duration: medicine.duration, + })); + + const newHealthRecord = await new Prescription({ + patient: patient, + doctor: req.user, + medicines: medicines, + notes: req.body.notes, + filled: req.body.filled, + }).save(); + + res.status(201).json(newHealthRecord); + } catch (error) { + res.status(500).json({ message: error.message }); + } +}; + exports.addAvailableSlot = async (req, res) => { try { diff --git a/backend/Routes/doctorRoutes.js b/backend/Routes/doctorRoutes.js index 31ce887..5cbb74f 100644 --- a/backend/Routes/doctorRoutes.js +++ b/backend/Routes/doctorRoutes.js @@ -28,6 +28,8 @@ router.route('/viewDoctorAppointments').get(authMiddlewares.protect, authMiddlew router.route('/acceptContract').put(doctorController.acceptContract); +router.route('/addHealthRecord').post(protect, restrictTo('doctor'), doctorController.addHealthRecord); + router.route('/scheduleFollowUp').put(authMiddlewares.protect, authMiddlewares.restrictTo('doctor'),doctorController.scheduleFollowUp); router.route('/viewAvailableSlots').get(authMiddlewares.protect, authMiddlewares.restrictTo('doctor'),doctorController.viewAvailableSlots); diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 0f0b24a..bb9e47d 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -27,6 +27,9 @@ import AddTimeSlot from "./components/AddTimeSlot"; import ViewAvailableAppointments from "./components/ViewAvailableAppointments"; import { BrowserRouter, Routes, Route } from "react-router-dom"; import HealthPackages from "./components/HealthPackages"; +import Contract from "./components/Contract"; +import SubscribeHealthPackages from "./components/SubscribeHealthPackages"; +import AddHealthRecord from "./components/AddHealthRecord"; import VerifyOTP from "./components/VerifyOTP"; import ForgetPassword from "./components/ForgetPassword"; import ResetPassword from "./components/ResetPassword"; @@ -88,6 +91,8 @@ function App() { element={} /> } /> + } /> + } diff --git a/frontend/src/components/AddHealthRecord.jsx b/frontend/src/components/AddHealthRecord.jsx new file mode 100644 index 0000000..6beb952 --- /dev/null +++ b/frontend/src/components/AddHealthRecord.jsx @@ -0,0 +1,83 @@ +import { useState } from "react"; +import axios from "axios"; + +const AddHealthRecordForm = () => { + const [patientUsername, setPatientUsername] = useState(''); + const [medicineName, setMedicineName] = useState(''); + const [dosage, setDosage] = useState(''); + const [duration, setDuration] = useState(''); + const [notes, setNotes] = useState(''); + const [filled, setFilled] = useState(true); + const [msg, setMsg] = useState(''); + + const handleAddHealthRecord = async (e) => { + e.preventDefault(); + try { + const response = await axios.post('http://localhost:8000/api/v1/doctors/addHealthRecord', + { + patientUsername: patientUsername, + medicines: [ + { + name: medicineName, + dosage: dosage, + duration: duration, + }, + ], + notes: notes, + filled: filled}, + { withCredentials: true }); + setPatientUsername(patientUsername); + setMedicineName(medicineName); + setDosage(dosage); + setDuration(duration); + setNotes(notes); + setFilled(filled); + const newHealthRecord = response.data; + console.log('Health Record added successfully:', newHealthRecord); + setMsg('Health Record added successfully!'); + } catch (error) { + console.error('Error:', error.message); + } + }; + + return ( +
+

Add Health Record

+ +
+ +
+ +
+ +
+