From a84f2dd08ff9dc9da53285282e61034de5db56ad Mon Sep 17 00:00:00 2001 From: Tzesh Date: Thu, 30 Mar 2023 00:53:33 +0300 Subject: [PATCH] structure to provide dynamic life activity forms --- routes/grade/grade.js | 8 +-- routes/patient/lifeactivity/lifeactivity.js | 58 +++++++++++++++++++++ 2 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 routes/patient/lifeactivity/lifeactivity.js diff --git a/routes/grade/grade.js b/routes/grade/grade.js index 17b7654..f4744a3 100644 --- a/routes/grade/grade.js +++ b/routes/grade/grade.js @@ -7,7 +7,7 @@ const GradeModel = require('../../models/GradeModel'); const UserModel = require('../../models/UserModel'); // create grade model -router.post("/create", auth, verifyPatient, async (req, res) => { +router.post("/create", auth, verifyPatient, async(req, res) => { // validation const { error } = gradeValidation(req.body); if (error) return res.status(400) @@ -51,7 +51,7 @@ router.post("/create", auth, verifyPatient, async (req, res) => { }); // list grades of patient by id -router.get("/list", auth, verifyPatient, async (req, res) => { +router.get("/list", auth, verifyPatient, async(req, res) => { // get patient let patient = req.patient; @@ -66,7 +66,7 @@ router.get("/list", auth, verifyPatient, async (req, res) => { }); // get request of patient by id -router.get("/get", auth, verifyPatient, async (req, res) => { +router.get("/get", auth, verifyPatient, async(req, res) => { // query validation const { error } = gradeQueryValidation(req.query); @@ -93,7 +93,7 @@ router.get("/get", auth, verifyPatient, async (req, res) => { }); // get request of user -router.get("/user", auth, async (req, res) => { +router.get("/user", auth, async(req, res) => { // get grades of user const gradeModel = await GradeModel.find({ diff --git a/routes/patient/lifeactivity/lifeactivity.js b/routes/patient/lifeactivity/lifeactivity.js new file mode 100644 index 0000000..2529569 --- /dev/null +++ b/routes/patient/lifeactivity/lifeactivity.js @@ -0,0 +1,58 @@ +const router = require("express").Router(); +const { auth } = require("../../auth/verifyToken"); +const { verifyPatient } = require('../verifyPatient'); +const LifeActivityFormModel = require('../../../models/LifeActivityFormModel'); +const LifeActivityQuestionModel = require('../../../models/LifeActivityQuestionModel'); +const LifeActivityRecordModel = require('../../../models/LifeActivityRecordModel'); +const FormRoute = require("./Form/form"); +const QuestionRoute = require("./Question/question"); +const RecordRoute = require("./Record/record"); + +// get all forms with questions and records for patient +router.get("", auth, verifyPatient, async(req, res) => { + // get patient + let patient = req.patient; + + // get records with given patient id + const records = await LifeActivityRecordModel.find({ patient: patient._id }); + + console.log(records); + + // get questions with records + const questions = await LifeActivityQuestionModel.find({ _id: { $in: records.map(record => record.question) } }); + + console.log(questions); + + // get forms with questions + const forms = await LifeActivityFormModel.find({ _id: { $in: questions.map(question => question.form) } }); + + console.log(forms); + + const formattedData = forms.map(form => { + return { + "form_title": form.name, + "form_sequence": form.sequence, + "data": questions.filter(question => question.form.toString() === form._id.toString()).map(question => { + return { + "question_id": question._id, + "fields": question.fields, + "correct_answer": records.find(record => record.question.toString() === question._id.toString()).correct_answer, + "title": question.title, + "description": "", + "type": question.type, + "remark": question.remark, + "is_mandatory": question.is_mandatory, + "show_answer": question.show_answer + } + }) + } + }); + + res.json(formattedData); +}); + +router.use("/form", FormRoute); // /patient/lifeActivity/diagnosisForm +router.use("/record", RecordRoute); // /patient/lifeActivity/diagnosisRecord +router.use("/question", QuestionRoute); // /patient/lifeActivity/diagnosis + +module.exports = router; \ No newline at end of file