-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
required routes and models have been developed
- Loading branch information
Showing
8 changed files
with
191 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
const { default: mongoose } = require("mongoose"); | ||
|
||
const OrderMedicineSchema = new mongoose.Schema({ | ||
medicineName: { | ||
type: String, | ||
required: true | ||
}, | ||
dose: { | ||
type: String | ||
}, | ||
periods: { | ||
type: String | ||
}, | ||
type: { | ||
type: Number, | ||
required: true | ||
}, | ||
}, { timestamps: true }); | ||
|
||
module.exports = mongoose.model('OrderMedicineModel', OrderMedicineSchema); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
const mongoose = require('mongoose'); | ||
|
||
const OrderSchema = new mongoose.Schema({ | ||
patient: { type: mongoose.Types.ObjectId, ref: 'PatientModel' }, | ||
medicines: [{ type: mongoose.Types.ObjectId, ref: 'OrderMedicineModel' }], | ||
}, { timestamps: true }); | ||
|
||
module.exports = mongoose.model('OrderModel', OrderSchema); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
const router = require("express").Router(); | ||
const { auth, verifyTokenAndAdmin, verifyTokenAndAuthorization } = require('../../auth/verifyToken'); | ||
const OrderMedicineModel = require('../../../models/OrderMedicineModel'); | ||
|
||
// get all medicines | ||
router.get("/get", auth, verifyTokenAndAdmin, async(req, res) => { | ||
// get medicines | ||
const medicines = await OrderMedicineModel.find(); | ||
|
||
// return | ||
res.status(200).json(medicines); | ||
}); | ||
|
||
// get medicine by name | ||
router.get("/get/:name", auth, verifyTokenAndAdmin, async(req, res) => { | ||
// get medicine | ||
const medicine = await OrderMedicineModel.findOne({ medicineName: req.params.name }); | ||
|
||
// if medicine not found | ||
if (!medicine) { | ||
// return error | ||
return res.status(400).json({ message: "Medicine not found" }); | ||
} | ||
|
||
// return | ||
res.status(200).json(medicine); | ||
}); | ||
|
||
// create a new order mdicine medicine | ||
router.post("/create", verifyTokenAndAdmin, async(req, res) => { | ||
// create model | ||
var medicine = new OrderMedicineModel({ | ||
medicineName: req.body.medicineName, | ||
dose: req.body.dose ? req.body.dose : "", | ||
periods: req.body.periods ? req.body.periods : "", | ||
type: req.body.type, | ||
}); | ||
|
||
// insert medicine | ||
OrderMedicineModel.create(medicine) | ||
.then(medicine => res.status(200).json(medicine)) | ||
.catch(err => res.status(500).json({ message: err })); | ||
}); | ||
|
||
// delete medicine by name | ||
router.delete("/delete", verifyTokenAndAdmin, async(req, res) => { | ||
|
||
// find and delete medicine | ||
OrderMedicineModel.deleteOne({ medicineName: req.body.medicineName }) | ||
.then(medicine => res.status(200).json(medicine)) | ||
.catch(err => res.status(500).json({ message: err })); | ||
}); | ||
|
||
// update medicine by name | ||
router.put("/update", verifyTokenAndAdmin, async(req, res) => { | ||
|
||
// find and update medicine | ||
OrderMedicineModel.updateOne({ medicineName: req.body.medicineName }, { | ||
medicineName: req.body.medicineName, | ||
dose: req.body.dose ? req.body.dose : "", | ||
periods: req.body.periods ? req.body.periods : "", | ||
type: req.body.type, | ||
}) | ||
.then(medicine => res.status(200).json(medicine)) | ||
.catch(err => res.status(500).json({ message: err })); | ||
}); | ||
|
||
module.exports = router; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
const router = require("express").Router(); | ||
const MedicineRoute = require("./medicine/medicine"); | ||
|
||
router.use("/medicine", MedicineRoute); // /order/medicine | ||
|
||
module.exports = router; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
const router = require("express").Router(); | ||
const { auth, verifyTokenAndAdmin, verifyTokenAndAuthorization } = require('../../auth/verifyToken'); | ||
const { queryValidation, idValidation } = require('../../../common/validation'); | ||
const { verifyPatient } = require('../verifyPatient'); | ||
const OrderMedicineModel = require('../../../models/OrderMedicineModel'); | ||
const OrderModel = require('../../../models/OrderModel'); | ||
|
||
// create a new order with given medicine names | ||
router.post("/create", verifyTokenAndAdmin, verifyPatient, async(req, res) => { | ||
// get patient | ||
let patient = req.patient; | ||
|
||
// check if patient has an order | ||
const existingOrder = await OrderModel.findOne({ patient: patient._id }); | ||
|
||
// if order exists | ||
if (existingOrder) { | ||
// return error | ||
return res.status(400).json({ message: "Patient already has an order" }); | ||
} | ||
|
||
// create medicines | ||
let medicines = []; | ||
|
||
// get medicines by name | ||
for (let i = 0; i < req.body.medicines.length; i++) { | ||
// get medicine | ||
let medicine = await OrderMedicineModel.findOne({ medicineName: req.body.medicines[i] }); | ||
|
||
// if medicine not found | ||
if (!medicine) { | ||
// return error | ||
return res.status(400).json({ message: "Medicine not found" }); | ||
} | ||
|
||
// add medicine | ||
medicines.push(medicine); | ||
} | ||
|
||
// create model | ||
var order = new OrderModel({ | ||
patient: patient._id, | ||
medicines: medicines | ||
}); | ||
|
||
// insert | ||
OrderModel.create(order) | ||
.then(order => res.status(200).json(order)) | ||
.catch(err => res.status(500).json({ message: err })); | ||
}); | ||
|
||
// get patient orders with medicines | ||
router.get("/get", auth, verifyPatient, async(req, res) => { | ||
// get patient | ||
let patient = req.patient; | ||
|
||
// get orders | ||
const orders = await OrderModel.find({ patient: patient._id }).populate('medicines'); | ||
|
||
// return | ||
res.status(200).json(orders); | ||
}); | ||
|
||
// remove patient order | ||
router.delete("/remove", verifyTokenAndAdmin, verifyPatient, async(req, res) => { | ||
// get patient | ||
let patient = req.patient; | ||
|
||
// check if patient has an order | ||
const existingOrder = await OrderModel.findOne({ patient: patient._id }); | ||
|
||
// if order does not exist | ||
if (!existingOrder) { | ||
// return error | ||
return res.status(400).json({ message: "Patient does not have an order" }); | ||
} | ||
|
||
// remove order | ||
OrderModel.deleteOne({ patient: patient._id }) | ||
.then(() => res.status(200).json({ message: "Order removed" })) | ||
.catch(err => res.status(500).json({ message: err })); | ||
}); | ||
|
||
module.exports = router; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters