diff --git a/src/DTOs/AdultPALDTO.ts b/src/DTOs/AdultPALDTO.ts index 239593338f3066ec6c1baed1c0e89056590f9176..ed5a73cb44c064cb61e48079f5de029748da756e 100644 --- a/src/DTOs/AdultPALDTO.ts +++ b/src/DTOs/AdultPALDTO.ts @@ -1,10 +1,10 @@ type AdultPAL = { - porcentajeUrbano: number; - NAFActivosUrbano: number; - NAFLivianaUrbano: number; - porcentajeRural: number; - NAFActivosRural: number; - NAFLivianaRural: number; + urbanPercentage: number; + activeUrbanPAL: number; + lowUrbanPAL: number; + ruralPercentage: number; + activeRuralPAL: number; + lowRuralPAL: number; }; export default AdultPAL; diff --git a/src/DTOs/AgeGroupDTO.ts b/src/DTOs/AgeGroupDTO.ts index 5acf22c1c9045c5d83bc02d16868e07b8d2fe4ef..b7d9768b2d37d62b7ded91172dd0a697da4facb4 100644 --- a/src/DTOs/AgeGroupDTO.ts +++ b/src/DTOs/AgeGroupDTO.ts @@ -2,10 +2,10 @@ import AgeBracket from '../Enum/AgeBracket'; import Sex from '../Enum/Sex'; type AgeGroup = { - edad: AgeBracket; - sexo: Sex; - pesoMediano: number; - cantidad: number; + age: AgeBracket; + sex: Sex; + medianWeight: number; + population: number; }; export default AgeGroup; diff --git a/src/DTOs/AgeGroupJSON.ts b/src/DTOs/AgeGroupJSON.ts index c8a111c0483005ff9db7a1de541cc14ff063ded7..0a795b4df24d3df45c9aa7c1423b9a09db36477c 100644 --- a/src/DTOs/AgeGroupJSON.ts +++ b/src/DTOs/AgeGroupJSON.ts @@ -1,8 +1,8 @@ type AgeGroupJSON = { - edad: string; - sexo: string; - pesoMediano: string; - cantidad: string; + age: string; + sex: string; + medianWeight: string; + population: string; }; export default AgeGroupJSON; diff --git a/src/DTOs/CalculatorResponseDTO.ts b/src/DTOs/CalculatorResponseDTO.ts index c4195f7d8f82b03e7d79c0310056e0b2f994a6f3..dc7df45f2b91d24ce1426550a52b62bb95763158 100644 --- a/src/DTOs/CalculatorResponseDTO.ts +++ b/src/DTOs/CalculatorResponseDTO.ts @@ -2,8 +2,8 @@ import EnergeticRequirement from './EnergeticRequirementDTO'; import GroupEnergeticRequirement from './GroupEnergeticRequirementDTO'; type CalculatorResponse = { - requerimientosPorGrupo: GroupEnergeticRequirement[]; - requerimientoTotal: EnergeticRequirement; + groupsRequirements: GroupEnergeticRequirement[]; + totalRequirement: EnergeticRequirement; }; export default CalculatorResponse; diff --git a/src/DTOs/EnergeticRequirementDTO.ts b/src/DTOs/EnergeticRequirementDTO.ts index ef11f41e11285421e15b7ff0745744f9be5065e1..c808a904027651c33c285569df261f0d7c9b996b 100644 --- a/src/DTOs/EnergeticRequirementDTO.ts +++ b/src/DTOs/EnergeticRequirementDTO.ts @@ -1,7 +1,7 @@ type EnergeticRequirement = { - requerimientoEnergeticoPerCapita: number; - requerimientoEnergeticoTotal: number; - poblacionTotal: number; + perCapita: number; + total: number; + totalPopulation: number; }; export default EnergeticRequirement; diff --git a/src/DTOs/ExtraDataDTO.ts b/src/DTOs/ExtraDataDTO.ts index c78835dd1e6139986ae5cafe13d76172597c9ea3..0964397beb6453c86b0772b4daabf2e06036d7d6 100644 --- a/src/DTOs/ExtraDataDTO.ts +++ b/src/DTOs/ExtraDataDTO.ts @@ -4,9 +4,9 @@ import MinorPAL from './MinorPALDTO'; import PopulationMaternity from './PopulationMaternityDTO'; type ExtraData = { - prevalenciaAFMenores: MinorPAL | undefined; - prevalenciaAFAdultos: AdultPAL | undefined; - datosEmbarazoLactancia: IndividualMaternity | PopulationMaternity | undefined; + minorPAL: MinorPAL | undefined; + adultPAL: AdultPAL | undefined; + maternity: IndividualMaternity | PopulationMaternity | undefined; }; export default ExtraData; diff --git a/src/DTOs/GroupEnergeticRequirementDTO.ts b/src/DTOs/GroupEnergeticRequirementDTO.ts index f0148429ee84ffb5bfdaabeaac73fbdb801c7ce9..391a86a0494e204f48419f3b67dbcf640319a403 100644 --- a/src/DTOs/GroupEnergeticRequirementDTO.ts +++ b/src/DTOs/GroupEnergeticRequirementDTO.ts @@ -1,9 +1,9 @@ import AgeGroupJSON from './AgeGroupJSON'; type GroupEnergeticRequirement = { - grupoEtario: AgeGroupJSON; - requerimientoEnergeticoPerCapita: number; - requerimientoEnergeticoTotal: number; + group: AgeGroupJSON; + perCapita: number; + total: number; }; export default GroupEnergeticRequirement; diff --git a/src/DTOs/IndividualMaternityDTO.ts b/src/DTOs/IndividualMaternityDTO.ts index d6a07a631f9ba6373cf6ddbe602b97cdca9cc5ae..6d35f66d71a7a35cc9c09501dbb95d0b3a85e7e1 100644 --- a/src/DTOs/IndividualMaternityDTO.ts +++ b/src/DTOs/IndividualMaternityDTO.ts @@ -1,7 +1,6 @@ type IndividualMaternity = { - mujeresEmbarazadas: number; - mujeresLactando: number; - mujeresEmbarazadasLactando: number; + pregnants: number; + lactating: number; }; export default IndividualMaternity; diff --git a/src/DTOs/MinorPALDTO.ts b/src/DTOs/MinorPALDTO.ts index dfb3ff83bc030aeb671be4bf6dd123a1964fe997..9633fca698d9fbbdac8092cab49ae03f75467c11 100644 --- a/src/DTOs/MinorPALDTO.ts +++ b/src/DTOs/MinorPALDTO.ts @@ -1,7 +1,7 @@ type MinorPAL = { - NAFLiviano: number; - NAFModerado: number; - NAFIntenso: number; + lowPalPrevalence: number; + moderatePALPrevalence: number; + intensePALPrevalence: number; }; export default MinorPAL; diff --git a/src/DTOs/PopulationMaternityDTO.ts b/src/DTOs/PopulationMaternityDTO.ts index 8345efe4804470533d979ee2e758c9377f5dfcfd..cf112bfffc91e4a7acbbaca62aa0cf11340b618f 100644 --- a/src/DTOs/PopulationMaternityDTO.ts +++ b/src/DTOs/PopulationMaternityDTO.ts @@ -1,6 +1,6 @@ type PopulationMaternity = { - tasaNatalidadPais: number; - poblacionPais: number; + countryBirthRate: number; + countryPpulation: number; }; export default PopulationMaternity; diff --git a/src/Enum/ParameterType.ts b/src/Enum/ParameterType.ts index f2ce0420bf75f91cee0fd4975c474d6e95f1b8ae..519746ebc4e832ee84655fcfcd2408e804398073 100644 --- a/src/Enum/ParameterType.ts +++ b/src/Enum/ParameterType.ts @@ -1,8 +1,8 @@ enum ParameterType { - NAF = 'NAF', - PesoPorDefecto = 'Peso por defecto', - EmbarazoYLactancia = 'Embarazo y lactancia', - ConstanteDeEcuacion = 'Constante de ecuacion' + PAL = 'NAF', + DefaultWeight = 'Peso por defecto', + Maternity = 'Embarazo y lactancia', + EquationConstant = 'Constante de ecuacion' } export default ParameterType; diff --git a/src/Enum/Sex.ts b/src/Enum/Sex.ts index 83d5304cb5cc3b6064b52143d9cf5f765a85806a..4c388f05f1e2641a83434544958f06ac83f3aaed 100644 --- a/src/Enum/Sex.ts +++ b/src/Enum/Sex.ts @@ -1,6 +1,6 @@ enum Sex { - Masculino = 'Masculino', - Femenino = 'Femenino', + Male = 'Masculino', + Female = 'Femenino', } export default Sex; diff --git a/src/Models/Parameter.ts b/src/Models/Parameter.ts index 35b130662806aada16ac16d5ab58836213aa57d2..ae2b4aeca1f19015e78524edcc8c0b53d13d592e 100644 --- a/src/Models/Parameter.ts +++ b/src/Models/Parameter.ts @@ -1,11 +1,16 @@ +import ParameterType from '../Enum/ParameterType'; + class Parameter { name: string; value: number; - constructor(name: string, value: number) { + parameterType: ParameterType; + + constructor(name: string, value: number, parameterType: ParameterType) { this.name = name; this.value = value; + this.parameterType = parameterType; } } diff --git a/src/Services/CalculatorService.ts b/src/Services/CalculatorService.ts index 66c82cebebdacc6da3054e0a10374058e01b61bc..a5a838b44cbdb83008054105773f2447b6eb26e9 100644 --- a/src/Services/CalculatorService.ts +++ b/src/Services/CalculatorService.ts @@ -8,13 +8,13 @@ import extraData from '../DTOs/ExtraDataDTO'; // eslint-disable-next-line max-len const calculateEnergeticRequirement = (groups: AgeGroupJSON[], data: extraData): CalculatorResponse => { - const parametros = new Map<number[], AgeGroup>(); + const parameters = new Map<number[], AgeGroup>(); const ageGroups = ParserService.parseGroups(groups); ageGroups.forEach((group: AgeGroup) => { - parametros.set(ParameterService.getEquationValues(group.edad, group.sexo), group); + parameters.set(ParameterService.getEquationValues(group.age, group.sex), group); }); - const res: CalculatorResponse = ERCalculator.calculateER(parametros, data); + const res: CalculatorResponse = ERCalculator.calculateER(parameters, data); return res; }; diff --git a/src/Services/ERCalculator.ts b/src/Services/ERCalculator.ts index 037caffc5ed8eeef92bd44f90ca497ca6e1875d8..1d5f3cca28d14a3b573aac52a755bf962fb1884e 100644 --- a/src/Services/ERCalculator.ts +++ b/src/Services/ERCalculator.ts @@ -3,32 +3,32 @@ import EnergeticRequirement from '../DTOs/EnergeticRequirementDTO'; import CalculatorResponse from '../DTOs/CalculatorResponseDTO'; import GroupEnergeticRequirement from '../DTOs/GroupEnergeticRequirementDTO'; import extraData from '../DTOs/ExtraDataDTO'; -import prevalenciaAFMenores from '../DTOs/MinorPALDTO'; +import MinorPALDTO from '../DTOs/MinorPALDTO'; import ParserService from './ParserService'; import AgeBracket from '../Enum/AgeBracket'; -const calculateGET = (group: AgeGroup, params: number[], preval: prevalenciaAFMenores): number => { - const getModerado: number = params[0] - + (params[1] * group.pesoMediano) - - params[2] * (group.pesoMediano * group.pesoMediano); +const calculateGET = (group: AgeGroup, params: number[], preval: MinorPALDTO): number => { + const getModerate: number = params[0] + + (params[1] * group.medianWeight) + - params[2] * (group.medianWeight * group.medianWeight); - const getLiviano: number = getModerado - (getModerado * params[4]) / 100; - const getIntenso: number = getModerado + (getModerado * params[5]) / 100; + const getLow: number = getModerate - (getModerate * params[4]) / 100; + const getIntense: number = getModerate + (getModerate * params[5]) / 100; - const ret: number = (getLiviano * preval.NAFLiviano) / 100 - + (getModerado * preval.NAFModerado) / 100 - + (getIntenso * preval.NAFIntenso) / 100; + const ret: number = (getLow * preval.lowPalPrevalence) / 100 + + (getModerate * preval.moderatePALPrevalence) / 100 + + (getIntense * preval.intensePALPrevalence) / 100; return ret; }; const calculateLessThanAYear = (group: AgeGroup, params: number[]): GroupEnergeticRequirement => { - const requirement = params[0] + (params[1] * group.pesoMediano) + params[2]; + const requirement = params[0] + (params[1] * group.medianWeight) + params[2]; const groupRequirement: GroupEnergeticRequirement = { - grupoEtario: ParserService.unparseGroup(group), - requerimientoEnergeticoPerCapita: requirement, - requerimientoEnergeticoTotal: requirement * group.cantidad, + group: ParserService.unparseGroup(group), + perCapita: requirement, + total: requirement * group.population, }; return groupRequirement; @@ -36,14 +36,14 @@ const calculateLessThanAYear = (group: AgeGroup, params: number[]): GroupEnerget const calculateOneToFiveYears = (group: AgeGroup, params: number[]): GroupEnergeticRequirement => { const requirement = params[0] - + (params[1] * group.pesoMediano) - + (params[2] * (group.pesoMediano ** 2)) + + (params[1] * group.medianWeight) + + (params[2] * (group.medianWeight ** 2)) + params[3]; const groupRequirement: GroupEnergeticRequirement = { - grupoEtario: ParserService.unparseGroup(group), - requerimientoEnergeticoPerCapita: requirement, - requerimientoEnergeticoTotal: requirement * group.cantidad, + group: ParserService.unparseGroup(group), + perCapita: requirement, + total: requirement * group.population, }; return groupRequirement; @@ -52,18 +52,18 @@ const calculateOneToFiveYears = (group: AgeGroup, params: number[]): GroupEnerge // eslint-disable-next-line max-len const calculateSixToSeventeenYears = (group: AgeGroup, params: number[], data: extraData): GroupEnergeticRequirement => { let get: number; - if (typeof (data.prevalenciaAFMenores) === 'undefined') { + if (typeof (data.minorPAL) === 'undefined') { throw new Error('Data missing'); } else { - get = calculateGET(group, params, data.prevalenciaAFMenores); + get = calculateGET(group, params, data.minorPAL); } const requirement = get + params[3]; const groupRequirement: GroupEnergeticRequirement = { - grupoEtario: ParserService.unparseGroup(group), - requerimientoEnergeticoPerCapita: requirement, - requerimientoEnergeticoTotal: requirement * group.cantidad, + group: ParserService.unparseGroup(group), + perCapita: requirement, + total: requirement * group.population, }; return groupRequirement; @@ -77,9 +77,9 @@ const calculateER = (groupParameters: Map<number[], AgeGroup>, data: extraData): const requirements: GroupEnergeticRequirement[] = []; groupParameters.forEach((group: AgeGroup, params: number[]) => { - totalOfPeople += group.cantidad; + totalOfPeople += group.population; let groupRequirement: GroupEnergeticRequirement; - switch (group.edad) { + switch (group.age) { case AgeBracket.m0: case AgeBracket.m1: case AgeBracket.m2: @@ -122,19 +122,19 @@ const calculateER = (groupParameters: Map<number[], AgeGroup>, data: extraData): throw new Error('Parsing error, attribute edad does not respect format'); } } - totalRequirement += groupRequirement.requerimientoEnergeticoTotal; + totalRequirement += groupRequirement.total; requirements.push(groupRequirement); }); const totalER: EnergeticRequirement = { - requerimientoEnergeticoPerCapita: totalRequirement / totalOfPeople, - requerimientoEnergeticoTotal: totalRequirement, - poblacionTotal: totalOfPeople, + perCapita: totalRequirement / totalOfPeople, + total: totalRequirement, + totalPopulation: totalOfPeople, }; const result: CalculatorResponse = { - requerimientosPorGrupo: requirements, - requerimientoTotal: totalER, + groupsRequirements: requirements, + totalRequirement: totalER, }; return result; diff --git a/src/Services/ParserService.ts b/src/Services/ParserService.ts index b9aedc9f4780a9abb1ce2a9a84019154efadb655..1da2a272864adc5339d87164819123e381525493 100644 --- a/src/Services/ParserService.ts +++ b/src/Services/ParserService.ts @@ -161,16 +161,16 @@ import Sex from '../Enum/Sex'; const parseGroups = (groups: AgeGroupJSON[]): AgeGroup[] => { const retGroups: AgeGroup[] = []; - groups.forEach((obj: AgeGroupJSON) => { + groups.forEach((ageGroup: AgeGroupJSON) => { // if (typeof (obj.pesoMediano) !== 'number' || typeof (obj.cantidad) !== 'number') { // console.log('Estas haciendo cualquiera flaco'); // throw new Error('Parsing error, attributes do not respect format'); // } const group: AgeGroup = { - edad: obj.edad as AgeBracket, - sexo: obj.sexo as Sex, - pesoMediano: parseFloat(obj.pesoMediano), - cantidad: parseFloat(obj.cantidad), + age: ageGroup.age as AgeBracket, + sex: ageGroup.sex as Sex, + medianWeight: parseFloat(ageGroup.medianWeight), + population: parseFloat(ageGroup.population), }; retGroups.push(group); }); @@ -179,10 +179,10 @@ const parseGroups = (groups: AgeGroupJSON[]): AgeGroup[] => { const unparseGroup = (group: AgeGroup): AgeGroupJSON => { const retGroup: AgeGroupJSON = { - edad: group.edad as string, - sexo: group.sexo as string, - pesoMediano: String(group.pesoMediano), - cantidad: String(group.cantidad), + age: group.age as string, + sex: group.sex as string, + medianWeight: String(group.medianWeight), + population: String(group.population), }; return retGroup; };