skydiet-lib-node
Advanced tools
Comparing version 1.0.7 to 1.0.8
import { IAttendanceQuestion } from "./models/IAttendanceQuestion"; | ||
import { IPatient } from "./models/IPatient"; | ||
export declare const processAnswer: (currentQuestion: IAttendanceQuestion, currentAttendenceQuestions: IAttendanceQuestion[], bankQuestions: IAttendanceQuestion[], patient: IPatient) => { | ||
import { IOptionsProcessAnswer } from "./models/IOptionsProcessAnswer"; | ||
export declare const processAnswer: (options: IOptionsProcessAnswer) => { | ||
questions: IAttendanceQuestion[]; | ||
@@ -5,0 +5,0 @@ autoAnswers: IAttendanceQuestion[]; |
@@ -10,18 +10,20 @@ "use strict"; | ||
const IQuestion_1 = require("./models/IQuestion"); | ||
const processAnswer = (currentQuestion, currentAttendenceQuestions, bankQuestions, patient) => { | ||
//localizar a pergunta no array de perguntas setando a resposta | ||
const question = currentAttendenceQuestions.find((q) => q._id === currentQuestion._id); | ||
const c2_util_1 = require("c2-util"); | ||
const const_1 = require("./const"); | ||
const processAnswer = (options) => { | ||
// localizar a pergunta no array de perguntas setando a resposta | ||
const question = options.currentAttendenceQuestions.find((q) => q._id === options.currentQuestion._id); | ||
if (!question) { | ||
throw new Error("invalid question"); | ||
} | ||
question.answer = currentQuestion.answer; | ||
question.answer = options.currentQuestion.answer; | ||
// filtra as perguntas já respondidas | ||
const questionsAnswereds = [...defaultAnswers(patient), ...currentAttendenceQuestions.filter((q) => q.answer && q.codeAnswer)]; | ||
const questionsChilds = bankQuestions.filter((q) => q.questionParent === currentQuestion.questionOrigin); | ||
const questionsAnswereds = [...defaultAnswers(options.patient, options.bankQuestions, options.attendanceMetActivities), ...options.currentAttendenceQuestions.filter((q) => q.answer && q.codeAnswer)]; | ||
const questionsChilds = options.bankQuestions.filter((q) => q.questionParent === options.currentQuestion.questionOrigin); | ||
const childsReleaseds = getChildsReleaseds(questionsChilds, questionsAnswereds); | ||
const childsDisableds = getChildsDisableds(questionsChilds, questionsAnswereds, bankQuestions); | ||
const questionsAutoAnswereds = getQuestionsAutoAnswereds(question.codeAnswer, questionsAnswereds, bankQuestions); | ||
let currentAttendenceQuestionsNew = currentAttendenceQuestions.filter((q) => !childsDisableds.map((disabled) => disabled._id).includes(q._id)); | ||
const childsDisableds = getChildsDisableds(questionsChilds, questionsAnswereds, options.bankQuestions); | ||
const questionsAutoAnswereds = getQuestionsAutoAnswereds(question.codeAnswer, questionsAnswereds, options.bankQuestions); | ||
let currentAttendenceQuestionsNew = options.currentAttendenceQuestions.filter((q) => !childsDisableds.map((disabled) => disabled._id).includes(q._id)); | ||
currentAttendenceQuestionsNew = [...currentAttendenceQuestionsNew, ...childsReleaseds]; | ||
const currentQuestionNew = currentAttendenceQuestionsNew.find((q) => q._id === currentQuestion._id); | ||
const currentQuestionNew = currentAttendenceQuestionsNew.find((q) => q._id === options.currentQuestion._id); | ||
if (currentQuestionNew) { | ||
@@ -109,5 +111,5 @@ currentQuestionNew.childs = childsReleaseds; | ||
exports.group = group; | ||
const defaultAnswers = (patient) => { | ||
const responseAttendanceQuestionsDependents = []; | ||
responseAttendanceQuestionsDependents.push({ | ||
const defaultAnswers = (patient, bankQuestions, attendanceMetActivities) => { | ||
const questionsDefaultAnswereds = []; | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: "AGE", | ||
@@ -117,3 +119,3 @@ typeAnswer: IQuestion_1.TYPE_ANSWER.OPEN_NUMBER, | ||
}); | ||
responseAttendanceQuestionsDependents.push({ | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: "BORN_DATE", | ||
@@ -123,3 +125,3 @@ typeAnswer: IQuestion_1.TYPE_ANSWER.DATE, | ||
}); | ||
responseAttendanceQuestionsDependents.push({ | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: "GENRE", | ||
@@ -129,3 +131,52 @@ typeAnswer: IQuestion_1.TYPE_ANSWER.OPEN_TEXT, | ||
}); | ||
return responseAttendanceQuestionsDependents; | ||
if (attendanceMetActivities?.length) { | ||
const currentWeight = bankQuestions.find((aq) => aq.codeAnswer === const_1.WEIGHT_CURRENT)?.answer ?? 0; | ||
for (const metActivity of attendanceMetActivities) { | ||
// 1 met = 1 kcal/kg/hour | ||
const metValue = metActivity.met?.metValue ?? 0; | ||
const caloriesSunday = metValue * currentWeight * ((0, c2_util_1.timeToPercentage)(metActivity.sundayTime)) ?? 0; | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: const_1.MET_CALORIES_ON_SUNDAY, | ||
typeAnswer: IQuestion_1.TYPE_ANSWER.OPEN_NUMBER, | ||
answer: caloriesSunday | ||
}); | ||
const caloriesMonday = metValue * currentWeight * ((0, c2_util_1.timeToPercentage)(metActivity.mondayTime)) ?? 0; | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: const_1.MET_CALORIES_ON_MONDAY, | ||
typeAnswer: IQuestion_1.TYPE_ANSWER.OPEN_NUMBER, | ||
answer: caloriesMonday | ||
}); | ||
const caloriesTuesday = metValue * currentWeight * ((0, c2_util_1.timeToPercentage)(metActivity.tuesdayTime)) ?? 0; | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: const_1.MET_CALORIES_ON_TUESDAY, | ||
typeAnswer: IQuestion_1.TYPE_ANSWER.OPEN_NUMBER, | ||
answer: caloriesTuesday | ||
}); | ||
const caloriesWednesday = metValue * currentWeight * ((0, c2_util_1.timeToPercentage)(metActivity.wednesdayTime)) ?? 0; | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: const_1.MET_CALORIES_ON_WEDNESDAY, | ||
typeAnswer: IQuestion_1.TYPE_ANSWER.OPEN_NUMBER, | ||
answer: caloriesWednesday | ||
}); | ||
const caloriesThursday = metValue * currentWeight * ((0, c2_util_1.timeToPercentage)(metActivity.thursdayTime)) ?? 0; | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: const_1.MET_CALORIES_ON_THURSDAY, | ||
typeAnswer: IQuestion_1.TYPE_ANSWER.OPEN_NUMBER, | ||
answer: caloriesThursday | ||
}); | ||
const caloriesFriday = metValue * currentWeight * ((0, c2_util_1.timeToPercentage)(metActivity.fridayTime)) ?? 0; | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: const_1.MET_CALORIES_ON_FRIDAY, | ||
typeAnswer: IQuestion_1.TYPE_ANSWER.OPEN_NUMBER, | ||
answer: caloriesFriday | ||
}); | ||
const caloriesSaturday = metValue * currentWeight * ((0, c2_util_1.timeToPercentage)(metActivity.saturdayTime)) ?? 0; | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: const_1.MET_CALORIES_ON_SATURDAY, | ||
typeAnswer: IQuestion_1.TYPE_ANSWER.OPEN_NUMBER, | ||
answer: caloriesSaturday | ||
}); | ||
} | ||
} | ||
return questionsDefaultAnswereds; | ||
}; | ||
@@ -132,0 +183,0 @@ const getChildsReleaseds = (questionsChilds, questionsAnswereds) => { |
{ | ||
"name": "skydiet-lib-node", | ||
"version": "1.0.7", | ||
"version": "1.0.8", | ||
"description": "Biblioteca para funções skydiet", | ||
@@ -21,2 +21,3 @@ "author": "Daniel Cabral <cabralconsultoriaemsoftware@gmail.com>", | ||
"dependencies": { | ||
"c2-util": "^1.0.23", | ||
"moment": "^2.30.1", | ||
@@ -23,0 +24,0 @@ "ts-node": "^10.8.1", |
104
src/index.ts
/* eslint-disable @typescript-eslint/no-unused-vars */ | ||
import moment from "moment" | ||
import { IAttendanceQuestion } from "./models/IAttendanceQuestion" | ||
import { IOptionsProcessAnswer } from "./models/IOptionsProcessAnswer" | ||
import { IPatient } from "./models/IPatient" | ||
import { TYPE_ANSWER, IQuestionOptions } from "./models/IQuestion" | ||
import { IQuestionOptions, TYPE_ANSWER } from "./models/IQuestion" | ||
import { IAttendanceMetActivity } from "./models/IAttendanceMetActivity" | ||
import { IAdminMet } from "./models/IAdminMet" | ||
import { timeToPercentage } from "c2-util" | ||
import { MET_CALORIES_ON_FRIDAY, MET_CALORIES_ON_MONDAY, MET_CALORIES_ON_SATURDAY, MET_CALORIES_ON_SUNDAY, MET_CALORIES_ON_THURSDAY, MET_CALORIES_ON_TUESDAY, MET_CALORIES_ON_WEDNESDAY, WEIGHT_CURRENT } from "./const" | ||
export const processAnswer = (currentQuestion: IAttendanceQuestion, currentAttendenceQuestions: IAttendanceQuestion[], bankQuestions: IAttendanceQuestion[], patient: IPatient): { | ||
questions: IAttendanceQuestion[], | ||
autoAnswers: IAttendanceQuestion[] | ||
} => { | ||
export const processAnswer = (options: IOptionsProcessAnswer): { | ||
questions: IAttendanceQuestion[], | ||
autoAnswers: IAttendanceQuestion[] | ||
} => { | ||
//localizar a pergunta no array de perguntas setando a resposta | ||
const question = currentAttendenceQuestions.find((q: IAttendanceQuestion) => q._id === currentQuestion._id) | ||
// localizar a pergunta no array de perguntas setando a resposta | ||
const question = options.currentAttendenceQuestions.find((q: IAttendanceQuestion) => q._id === options.currentQuestion._id) | ||
if (!question) { | ||
throw new Error("invalid question") | ||
} | ||
question.answer = currentQuestion.answer | ||
question.answer = options.currentQuestion.answer | ||
// filtra as perguntas já respondidas | ||
const questionsAnswereds = [...defaultAnswers(patient), ...currentAttendenceQuestions.filter((q: IAttendanceQuestion) => q.answer && q.codeAnswer)] | ||
const questionsAnswereds = [...defaultAnswers(options.patient, options.bankQuestions, options.attendanceMetActivities), ...options.currentAttendenceQuestions.filter((q: IAttendanceQuestion) => q.answer && q.codeAnswer)] | ||
const questionsChilds = bankQuestions.filter((q: IAttendanceQuestion) => q.questionParent === currentQuestion.questionOrigin) | ||
const questionsChilds = options.bankQuestions.filter((q: IAttendanceQuestion) => q.questionParent === options.currentQuestion.questionOrigin) | ||
const childsReleaseds = getChildsReleaseds(questionsChilds, questionsAnswereds) | ||
const childsDisableds = getChildsDisableds(questionsChilds, questionsAnswereds, bankQuestions) | ||
const questionsAutoAnswereds = getQuestionsAutoAnswereds(question.codeAnswer, questionsAnswereds, bankQuestions) | ||
const childsDisableds = getChildsDisableds(questionsChilds, questionsAnswereds, options.bankQuestions) | ||
const questionsAutoAnswereds = getQuestionsAutoAnswereds(question.codeAnswer, questionsAnswereds, options.bankQuestions) | ||
let currentAttendenceQuestionsNew = currentAttendenceQuestions.filter((q: IAttendanceQuestion) => !childsDisableds.map((disabled: IAttendanceQuestion) => disabled._id).includes(q._id)); | ||
let currentAttendenceQuestionsNew = options.currentAttendenceQuestions.filter((q: IAttendanceQuestion) => !childsDisableds.map((disabled: IAttendanceQuestion) => disabled._id).includes(q._id)); | ||
currentAttendenceQuestionsNew = [...currentAttendenceQuestionsNew, ...childsReleaseds] | ||
const currentQuestionNew = currentAttendenceQuestionsNew.find((q: IAttendanceQuestion) => q._id === currentQuestion._id) | ||
const currentQuestionNew = currentAttendenceQuestionsNew.find((q: IAttendanceQuestion) => q._id === options.currentQuestion._id) | ||
if (currentQuestionNew) { | ||
@@ -123,6 +128,6 @@ currentQuestionNew.childs = childsReleaseds | ||
const defaultAnswers = (patient: IPatient): IAttendanceQuestion[] => { | ||
const responseAttendanceQuestionsDependents: IAttendanceQuestion[] = []; | ||
const defaultAnswers = (patient: IPatient, bankQuestions: IAttendanceQuestion[], attendanceMetActivities?: IAttendanceMetActivity[]): IAttendanceQuestion[] => { | ||
const questionsDefaultAnswereds: IAttendanceQuestion[] = []; | ||
responseAttendanceQuestionsDependents.push({ | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: "AGE", | ||
@@ -133,3 +138,3 @@ typeAnswer: TYPE_ANSWER.OPEN_NUMBER, | ||
responseAttendanceQuestionsDependents.push({ | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: "BORN_DATE", | ||
@@ -140,3 +145,3 @@ typeAnswer: TYPE_ANSWER.DATE, | ||
responseAttendanceQuestionsDependents.push({ | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: "GENRE", | ||
@@ -147,3 +152,62 @@ typeAnswer: TYPE_ANSWER.OPEN_TEXT, | ||
return responseAttendanceQuestionsDependents; | ||
if (attendanceMetActivities?.length){ | ||
const currentWeight = bankQuestions.find((aq: IAttendanceQuestion) => aq.codeAnswer === WEIGHT_CURRENT)?.answer ?? 0 | ||
for (const metActivity of attendanceMetActivities) { | ||
// 1 met = 1 kcal/kg/hour | ||
const metValue = (metActivity.met as IAdminMet)?.metValue ?? 0 | ||
const caloriesSunday = metValue * currentWeight * (timeToPercentage(metActivity.sundayTime)) ?? 0 | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: MET_CALORIES_ON_SUNDAY, | ||
typeAnswer: TYPE_ANSWER.OPEN_NUMBER, | ||
answer: caloriesSunday | ||
} as IAttendanceQuestion); | ||
const caloriesMonday = metValue * currentWeight * (timeToPercentage(metActivity.mondayTime)) ?? 0 | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: MET_CALORIES_ON_MONDAY, | ||
typeAnswer: TYPE_ANSWER.OPEN_NUMBER, | ||
answer: caloriesMonday | ||
} as IAttendanceQuestion); | ||
const caloriesTuesday = metValue * currentWeight * (timeToPercentage(metActivity.tuesdayTime)) ?? 0 | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: MET_CALORIES_ON_TUESDAY, | ||
typeAnswer: TYPE_ANSWER.OPEN_NUMBER, | ||
answer: caloriesTuesday | ||
} as IAttendanceQuestion); | ||
const caloriesWednesday = metValue * currentWeight * (timeToPercentage(metActivity.wednesdayTime)) ?? 0 | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: MET_CALORIES_ON_WEDNESDAY, | ||
typeAnswer: TYPE_ANSWER.OPEN_NUMBER, | ||
answer: caloriesWednesday | ||
} as IAttendanceQuestion); | ||
const caloriesThursday = metValue * currentWeight * (timeToPercentage(metActivity.thursdayTime)) ?? 0 | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: MET_CALORIES_ON_THURSDAY, | ||
typeAnswer: TYPE_ANSWER.OPEN_NUMBER, | ||
answer: caloriesThursday | ||
} as IAttendanceQuestion); | ||
const caloriesFriday = metValue * currentWeight * (timeToPercentage(metActivity.fridayTime)) ?? 0 | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: MET_CALORIES_ON_FRIDAY, | ||
typeAnswer: TYPE_ANSWER.OPEN_NUMBER, | ||
answer: caloriesFriday | ||
} as IAttendanceQuestion); | ||
const caloriesSaturday = metValue * currentWeight * (timeToPercentage(metActivity.saturdayTime)) ?? 0 | ||
questionsDefaultAnswereds.push({ | ||
codeAnswer: MET_CALORIES_ON_SATURDAY, | ||
typeAnswer: TYPE_ANSWER.OPEN_NUMBER, | ||
answer: caloriesSaturday | ||
} as IAttendanceQuestion); | ||
} | ||
} | ||
return questionsDefaultAnswereds; | ||
} | ||
@@ -150,0 +214,0 @@ |
61451
40
1354
4
+ Addedc2-util@^1.0.23
+ Addedc2-util@1.0.26(transitive)
+ Addedfs@0.0.1-security(transitive)