diff --git a/.env b/.env
index 0efeaa73b19403be4d206de6b8274dfc447b4926..2f26ed02da8b5ec45b282490c9443c541e04f4c7 100644
--- a/.env
+++ b/.env
@@ -1,2 +1,6 @@
 PORT=8000
-INSTANCE=PROD
\ No newline at end of file
+INSTANCE=PROD
+HOST=localhost
+USER=root
+PASSWORD=rootroot
+DB=parameter_database
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index c6bdbb76309d8f805e24c9ab3df8f1ffde34d075..6d6dd69a02336f5b6ef67682f6e96f8f805e91de 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,5 @@ build
 npm-debug.log
 .DS_Store
 logs/
+
+.env
diff --git a/src/Config/Constants.ts b/src/Config/Constants.ts
index 337ad28868f7d7644c20f3507cdfa12582227d5d..7331d938932caff351d34e3c0b8dca09244b47f8 100644
--- a/src/Config/Constants.ts
+++ b/src/Config/Constants.ts
@@ -4,3 +4,29 @@ export const SheetNames = {
   HOMBRES_MENORES: 'Hombres<1',
   MUJERES_MENORES: 'Mujeres<1',
 };
+
+export const extraDataIDs: {[key: string]: string} = {
+  minLowPrev: 'minorLowPrevalence',
+  minModPrev: 'minorModeratePrevalence',
+  minIntPrev: 'minorIntensePrevalence',
+  lowPercDiff: 'lowPercentageDifference',
+  intPercDiff: 'intensePercentageDifference',
+  urbPopPerc: 'urbanPopulation',
+  rurPopPerc: 'ruralPopulation',
+  urbAdultActPerc: 'urbanActivePALPercentage',
+  urbAdultLowPerc: 'urbanLowPALPercentage',
+  rurAdultActPerc: 'ruralActivePALPercentage',
+  rurAdultLowPerc: 'ruralLowPALPercentage',
+  urbAdultActVal: 'ruralActivePALValue',
+  urbAdultLowVal: 'ruralLowPALValue',
+  rurAdultActVal: 'urbanActivePALValue',
+  rurAdultLowVal: 'urbanLowPALValue',
+  popCountry: 'countryPopulation',
+  pop18to29Fem: '18to29FemaleCountryPopulation',
+  pop30to59Fem: '30to59FemaleCountryPopulation',
+  birthRate: 'birthRate',
+  extraEnergyPreg18to29: 'pregnancyExtraEnergy18to29',
+  extraEnergyLact18to29: 'lactationExtraEnergy18to29',
+  extraEnergyPreg30to59: 'pregnancyExtraEnergy30to59',
+  extraEnergyLact30to59: 'lactationExtraEnergy30to59',
+};
diff --git a/src/Config/DBConfig.ts b/src/Config/DBConfig.ts
deleted file mode 100644
index ddd9d64e490508284986414c5e5181364fb75260..0000000000000000000000000000000000000000
--- a/src/Config/DBConfig.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export const DBConfig = {
-  HOST: 'localhost',
-  USER: 'root',
-  PASSWORD: 'password', // antes decia 'password'
-  DB: 'parameter_database',
-  dialect: 'mysql',
-};
diff --git a/src/Controllers/CalculatorController.ts b/src/Controllers/CalculatorController.ts
index 91db8387271d961d2b9691c5d8fe151fd206ce3d..8cbdaa210b0ac29485bdaf55c2d1e61640666f2f 100644
--- a/src/Controllers/CalculatorController.ts
+++ b/src/Controllers/CalculatorController.ts
@@ -14,9 +14,8 @@ const { validate } = new Validator({});
 const getREP: Handler = async (req: Request, res: Response) => {
   const { groups, extraData } = req.body;
   try {
-    // sry pero no sabia como sacarle un caracter a esa linea :(
-    // eslint-disable-next-line max-len
-    const EnergyReq: CalculatorResponse = await CalculatorService.calculateEnergeticRequirement(groups, extraData);
+    const EnergyReq: CalculatorResponse = await CalculatorService
+      .calculateEnergeticRequirement(groups, extraData);
     return res.status(200).send(EnergyReq);
   } catch (error) {
     const e = error as Error;
diff --git a/src/Controllers/ParameterController.ts b/src/Controllers/ParameterController.ts
index 2fc04f00f65704449e2f085cc22ebb5726d6648d..2586a27c883c064a4c46f27b04ad25594704c430 100644
--- a/src/Controllers/ParameterController.ts
+++ b/src/Controllers/ParameterController.ts
@@ -45,25 +45,21 @@ const getDefaultExtraData: Handler = async (req: Request, res: Response) => {
 };
 
 const updateParameterValue: Handler = async (req: Request, res: Response) => {
-  const { parameter } = req.body;
+  const { parameters } = req.body;
   try {
-    switch (parameter.parameterType) {
+    switch (parameters[0].parameterType) {
       case ParameterType.DefaultWeight:
-        await ParameterService.updateDefaultWeight(
-          parameter.ageRange, parameter.sex, parameter.value,
-        );
+        await ParameterService.updateDefaultWeight(parameters[0]);
         break;
       case ParameterType.MinorPAL:
       case ParameterType.AdultPAL:
       case ParameterType.Maternity:
-        await ParameterService.updateExtraData(parameter.id, parameter.value);
+        await ParameterService.updateExtraData(parameters);
         break;
       case ParameterType.TEE:
       case ParameterType.BMR:
       case ParameterType.GrowthEnergy:
-        await ParameterService.updateEquationConstant(
-          parameter.ageRange, parameter.sex, parameter.order, parameter.value,
-        );
+        await ParameterService.updateEquationConstant(parameters[0]);
         break;
       default:
         break;
diff --git a/src/Controllers/SheetController.ts b/src/Controllers/SheetController.ts
index 727fc2700141838ffbac52798702d4a67f5a7e56..9b4d63138b64b2290f2300e506b8eaaf51715153 100644
--- a/src/Controllers/SheetController.ts
+++ b/src/Controllers/SheetController.ts
@@ -1,7 +1,6 @@
 import {
   Handler, Request, Response, Router,
 } from 'express';
-import { SheetParserResponse } from '../Models/SheetParserResponse';
 import SheetService from '../Services/SheetService';
 import logger from '../Logger/logger';
 import AgeGroupJSON from '../DTOs/AgeGroupJSON';
diff --git a/src/DAOs/README.txt b/src/DAOs/README.txt
deleted file mode 100644
index 592fbaaa66ae405b77df5a770b66992be443a910..0000000000000000000000000000000000000000
--- a/src/DAOs/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-Aca van los DAOs, los daos son los archivos que tienen comunicacion directa con la BD. Ningun otro archivo que no sea un dao puede tener acceso directo a la BD
\ No newline at end of file
diff --git a/src/DTOs/AgeGroupJSON.ts b/src/DTOs/AgeGroupJSON.ts
index 6459407ed0aac27ae9791ca069d5295b45137859..6b774a10a0d341dbf49d9f530d4fccd9bd231962 100644
--- a/src/DTOs/AgeGroupJSON.ts
+++ b/src/DTOs/AgeGroupJSON.ts
@@ -1,8 +1,8 @@
 type AgeGroupJSON = {
-  age: string; // TODO: check enum
+  age: string;
   sex: string;
-  medianWeight: number; // TODO: check if it can be number again
-  population: number; // TODO: check if it can be number again
+  medianWeight: number;
+  population: number;
 };
 
 export default AgeGroupJSON;
diff --git a/src/Interfaces/README.txt b/src/Interfaces/README.txt
deleted file mode 100644
index 0ea96f66dda63f5611c7f5562dfea9e144f65389..0000000000000000000000000000000000000000
--- a/src/Interfaces/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-Aca van las interfaces, acordarse de como nombrarlas, esta en el documento en Teams
\ No newline at end of file
diff --git a/src/Loaders/ParameterDataBase.ts b/src/Loaders/ParameterDataBase.ts
index d6d458f7d0103e35e9a36340a2491e48d1f59d27..7add75166c89ea7251288345b6d92599c7b96b51 100644
--- a/src/Loaders/ParameterDataBase.ts
+++ b/src/Loaders/ParameterDataBase.ts
@@ -1,16 +1,21 @@
 import { Sequelize } from 'sequelize';
-import { DBConfig } from '../Config/DBConfig';
+
+const DB: string = process.env.DB || 'parameter_database';
+const USER: string = process.env.USER || 'root';
+const PASSWORD: string = process.env.PASSWORD || 'password';
+const HOST: string = process.env.HOST || 'localhost';
 
 const sequelize = new Sequelize(
-  DBConfig.DB,
-  DBConfig.USER,
-  DBConfig.PASSWORD,
+  DB,
+  USER,
+  PASSWORD,
   {
-    host: DBConfig.HOST,
+    host: HOST,
     dialect: 'mysql',
     dialectOptions: {
       multipleStatements: true,
     },
+    logging: false,
   },
 );
 
diff --git a/src/Loaders/ParameterDataBaseLoader.ts b/src/Loaders/ParameterDataBaseLoader.ts
index f086c2118402a6c8e08bb2d188cb1567e814a901..560d0fbc2cd3d60d2d0f5c8f1c6ff6b98a86c285 100644
--- a/src/Loaders/ParameterDataBaseLoader.ts
+++ b/src/Loaders/ParameterDataBaseLoader.ts
@@ -1,3 +1,4 @@
+/* eslint-disable no-console */
 import fs from 'fs';
 import path from 'path';
 import DefaultExtraDataDTO from '../DTOs/DefaultExtraDataDTO';
diff --git a/src/Schemas/getRepBody.ts b/src/Schemas/getRepBody.ts
index 3eeb9e715be29a113683b565b7a70d89b23d6dbe..deadbe2ba3bb2a80f9aa1925f2855debf7578afd 100644
--- a/src/Schemas/getRepBody.ts
+++ b/src/Schemas/getRepBody.ts
@@ -13,12 +13,15 @@ const getRepBody = {
           },
           sex: {
             type: 'string' as const,
+            pattern: '(^Masculino$)|(^Femenino$)',
           },
           medianWeight: {
             type: 'number' as const,
+            minimum: 0,
           },
           population: {
             type: 'number' as const,
+            minumum: 0,
           },
         },
       },
@@ -32,12 +35,18 @@ const getRepBody = {
           properties: {
             lowPALPrevalence: {
               type: 'number' as const,
+              minimum: 0,
+              maximum: 100,
             },
             moderatePALPrevalence: {
               type: 'number' as const,
+              minimum: 0,
+              maximum: 100,
             },
             intensePALPrevalence: {
               type: 'number' as const,
+              minimum: 0,
+              maximum: 100,
             },
           },
         },
@@ -45,22 +54,61 @@ const getRepBody = {
           type: 'object' as const,
           required: ['urbanPercentage', 'activeUrbanPAL', 'lowUrbanPAL', 'ruralPercentage', 'activeRuralPAL', 'lowRuralPAL'],
           properties: {
-            urbanPercentage: { type: 'number' as const },
-            activeUrbanPAL: { type: 'number' as const },
-            lowUrbanPAL: { type: 'number' as const },
-            ruralPercentage: { type: 'number' as const },
-            activeRuralPAL: { type: 'number' as const },
-            lowRuralPAL: { type: 'number' as const },
+            urbanPercentage: {
+              type: 'number' as const,
+              minimum: 0,
+              maximum: 100,
+            },
+            activeUrbanPAL: {
+              type: 'number' as const,
+              minimum: 0,
+              maximum: 100,
+            },
+            lowUrbanPAL: {
+              type: 'number' as const,
+              minimum: 0,
+              maximum: 100,
+            },
+            ruralPercentage: {
+              type: 'number' as const,
+              minimum: 0,
+              maximum: 100,
+            },
+            activeRuralPAL: {
+              type: 'number' as const,
+              minimum: 0,
+              maximum: 100,
+            },
+            lowRuralPAL: {
+              type: 'number' as const,
+              minimum: 0,
+              maximum: 100,
+            },
           },
         },
         maternity18To29: {
           type: 'object' as const,
           properties: {
-            pregnantWomen: { type: 'number' as const },
-            lactatingWomen: { type: 'number' as const },
-            countryBirthRate: { type: 'number' as const },
-            countryWomenInAgeGroup: { type: 'number' as const },
-            countryPopulation: { type: 'number' as const },
+            pregnantWomen: {
+              type: 'number' as const,
+              minimum: 0,
+            },
+            lactatingWomen: {
+              type: 'number' as const,
+              minimum: 0,
+            },
+            countryBirthRate: {
+              type: 'number' as const,
+              minimum: 0,
+            },
+            countryWomenInAgeGroup: {
+              type: 'number' as const,
+              exclusiveMinimum: 0,
+            },
+            countryPopulation: {
+              type: 'number' as const,
+              exclusiveMinimum: 0,
+            },
           },
           oneOf: [
             {
@@ -74,11 +122,26 @@ const getRepBody = {
         maternity30To59: {
           type: 'object' as const,
           properties: {
-            pregnantWomen: { type: 'number' as const },
-            lactatingWomen: { type: 'number' as const },
-            countryBirthRate: { type: 'number' as const },
-            countryWomenInAgeGroup: { type: 'number' as const },
-            countryPopulation: { type: 'number' as const },
+            pregnantWomen: {
+              type: 'number' as const,
+              minimum: 0,
+            },
+            lactatingWomen: {
+              type: 'number' as const,
+              minimum: 0,
+            },
+            countryBirthRate: {
+              type: 'number' as const,
+              minimum: 0,
+            },
+            countryWomenInAgeGroup: {
+              type: 'number' as const,
+              exclusiveMinimum: 0,
+            },
+            countryPopulation: {
+              type: 'number' as const,
+              exclusiveMinimum: 0,
+            },
           },
           oneOf: [
             {
diff --git a/src/Schemas/updateParameterValueBody.ts b/src/Schemas/updateParameterValueBody.ts
index d46e0e29c5c0c28b60a10bdf0166bc1b24acfb1f..048b17e3d636a4174702c20a04e8486db911a217 100644
--- a/src/Schemas/updateParameterValueBody.ts
+++ b/src/Schemas/updateParameterValueBody.ts
@@ -1,43 +1,57 @@
 const updateParameterValueBody = {
   type: 'object' as const,
-  required: ['parameter'],
+  required: ['parameters'],
   properties: {
-    parameter: {
-      type: 'object' as const,
-      properties: {
-        ageRange: {
-          type: 'string' as const,
-        },
-        sex: {
-          type: 'string' as const,
-        },
-        id: {
-          type: 'string' as const,
-        },
-        value: {
-          type: 'number' as const,
-        },
-        parameterType: {
-          type: 'string' as const,
-        },
-        order: {
-          type: 'number' as const,
-        },
-        description: {
-          type: 'string' as const,
-        },
+    parameters: {
+      type: 'array' as const,
+      items: {
+        type: 'object' as const,
+        properties: {
+          ageRange: {
+            type: 'string' as const,
+          },
+          sex: {
+            type: 'string' as const,
+            pattern: '(^Masculino$)|(^Femenino$)',
+          },
+          id: {
+            type: 'string' as const,
+          },
+          value: {
+            type: 'number' as const,
+          },
+          order: {
+            type: 'number' as const,
+            minimum: 0,
+          },
+          description: {
+            type: 'string' as const,
+          },
+        },
+        anyOf: [
+          {
+            parameterType: {
+              type: 'string' as const,
+              pattern: '(^TMB$)|(^GET$)|(^Energia para crecimiento$)',
+            },
+            required: ['parameterType', 'ageRange', 'sex', 'order', 'value'],
+          },
+          {
+            parameterType: {
+              type: 'string' as const,
+              pattern: '^Peso por defecto$',
+            },
+            required: ['parameterType', 'ageRange', 'sex', 'value'],
+          },
+          {
+            parameterType: {
+              type: 'string' as const,
+              pattern: '(^NAF Menores$)|(^NAF Adultos$)|(^Embarazo y lactancia$)',
+            },
+            required: ['parameterType', 'id', 'value'],
+          },
+        ],
       },
-      oneOf: [
-        {
-          required: ['parameterType', 'ageRange', 'sex', 'value'],
-        },
-        {
-          required: ['parameterType', 'id', 'value'],
-        },
-        {
-          required: ['parameterType', 'ageRange', 'sex', 'order', 'value'],
-        },
-      ],
     },
   },
 };
diff --git a/src/Services/ERCalculator.ts b/src/Services/ERCalculator.ts
index 3b98680e09d1f1d5c774595cde7e3fdf8a6409c2..3654ca3f2d8fc86bd2c6fc5019c3c8d4ff073637 100644
--- a/src/Services/ERCalculator.ts
+++ b/src/Services/ERCalculator.ts
@@ -24,8 +24,7 @@ const calculateTEE = (group: AgeGroup, params: number[], preval: MinorPAL): numb
   const prevalCheck: number = preval.intensePALPrevalence
   + preval.lowPALPrevalence
   + preval.moderatePALPrevalence;
-  if (prevalCheck !== 100 || preval.intensePALPrevalence < 0
-    || preval.moderatePALPrevalence < 0 || preval.lowPALPrevalence < 0) {
+  if (prevalCheck !== 100) {
     throw new Error('Minor PAL data does not respect format');
   }
 
@@ -36,11 +35,9 @@ const calculateTEE = (group: AgeGroup, params: number[], preval: MinorPAL): numb
   const teeLow: number = teeModerate + (teeModerate * params[4]) / 100;
   const teeIntense: number = teeModerate + (teeModerate * params[5]) / 100;
 
-  const ret: number = (teeLow * preval.lowPALPrevalence) / 100
+  return (teeLow * preval.lowPALPrevalence) / 100
   + (teeModerate * preval.moderatePALPrevalence) / 100
   + (teeIntense * preval.intensePALPrevalence) / 100;
-
-  return ret;
 };
 
 // BMR (Basal Metabolic Rate) = TMB (Tasa Metabolica Basal)
@@ -54,10 +51,7 @@ const calculatePAL = (params: number[], popData: AdultPAL): number => {
   const popCheck: number = popData.ruralPercentage + popData.urbanPercentage;
   const urbanPALCheck: number = popData.activeUrbanPAL + popData.lowUrbanPAL;
   const ruralPALCheck: number = popData.activeRuralPAL + popData.lowRuralPAL;
-  if (popCheck !== 100 || urbanPALCheck !== 100 || ruralPALCheck !== 100
-  || popData.ruralPercentage < 0 || popData.urbanPercentage < 0
-  || popData.activeUrbanPAL < 0 || popData.lowUrbanPAL < 0
-  || popData.activeRuralPAL < 0 || popData.lowRuralPAL < 0) {
+  if (popCheck !== 100 || urbanPALCheck !== 100 || ruralPALCheck !== 100) {
     throw new Error('Adult PAL data does not respect format');
   }
 
@@ -74,7 +68,7 @@ const calculatePAL = (params: number[], popData: AdultPAL): number => {
 // eslint-disable-next-line max-len
 const calculateERWomenIndividual = (group: AgeGroup, params: number[], popData: IndividualMaternity, req: number): number => {
   const popCheck: number = popData.lactatingWomen + popData.pregnantWomen;
-  if (popCheck > group.population || popData.lactatingWomen < 0 || popData.pregnantWomen < 0) {
+  if (popCheck > group.population) {
     throw new Error('Individual Maternity does not respect format');
   }
 
@@ -90,10 +84,7 @@ const calculateERWomenIndividual = (group: AgeGroup, params: number[], popData:
 
 // eslint-disable-next-line max-len
 const calculateERWomenPopulation = (params: number[], popData: PopulationMaternity, req: number): number => {
-  if (popData.countryWomenInAgeGroup > popData.countryPopulation
-    || typeof (popData.countryBirthRate) !== 'number' || popData.countryBirthRate < 0
-    || typeof (popData.countryWomenInAgeGroup) !== 'number' || popData.countryWomenInAgeGroup < 0
-    || typeof (popData.countryPopulation) !== 'number' || popData.countryPopulation < 0) {
+  if (popData.countryWomenInAgeGroup > popData.countryPopulation) {
     throw new Error('Population Maternity does not respect format');
   }
 
@@ -140,7 +131,7 @@ const calculate1To5Years = (group: AgeGroup, params: number[]): GroupEnergeticRe
 const calculate6To17Years = (group: AgeGroup, params: number[], data: ExtraData): GroupEnergeticRequirement => {
   let tee: number;
   if (typeof (data.minorPAL) === 'undefined') {
-    throw new Error('Missing data');
+    throw new Error('Missing minors\' physical activity prevalence data');
   } else {
     tee = calculateTEE(group, params, data.minorPAL);
   }
@@ -161,7 +152,7 @@ const calculate18To29Years = (group: AgeGroup, params: number[], data: ExtraData
   let bmr: number;
   let pal: number;
   if (typeof (data.adultPAL) === 'undefined') {
-    throw new Error('Missing data');
+    throw new Error('Missing adults\' physical activity prevalence data');
   } else {
     bmr = calculateBMR(group, params);
     pal = calculatePAL(params, data.adultPAL);
@@ -173,7 +164,7 @@ const calculate18To29Years = (group: AgeGroup, params: number[], data: ExtraData
   // the extra energy required by women that are pregnant or lactating
   if (group.sex === Sex.Female) {
     if (data.maternity18To29 === undefined) {
-      throw new Error('Missing data');
+      throw new Error('Missing maternity data for women aged 18 to 29');
     } else if (isIndividualMaternity(data.maternity18To29)) {
       requirement = calculateERWomenIndividual(group, params, data.maternity18To29, requirement);
     } else {
@@ -195,7 +186,7 @@ const calculate30To59Years = (group: AgeGroup, params: number[], data: ExtraData
   let bmr: number;
   let pal: number;
   if (typeof (data.adultPAL) === 'undefined') {
-    throw new Error('Missing data');
+    throw new Error('Missing adults\' physical activity prevalence data');
   } else {
     bmr = calculateBMR(group, params);
     pal = calculatePAL(params, data.adultPAL);
@@ -207,7 +198,7 @@ const calculate30To59Years = (group: AgeGroup, params: number[], data: ExtraData
   // the extra energy required by women that are pregnant or lactating
   if (group.sex === Sex.Female) {
     if (typeof (data.maternity30To59) === 'undefined') {
-      throw new Error('Missing data');
+      throw new Error('Missing maternity data for women aged 30 to 59');
     } else if (isIndividualMaternity(data.maternity30To59)) {
       requirement = calculateERWomenIndividual(group, params, data.maternity30To59, requirement);
     } else {
@@ -229,7 +220,7 @@ const calculate60PlusYears = (group: AgeGroup, params: number[], data: ExtraData
   let bmr: number;
   let pal: number;
   if (typeof (data.adultPAL) === 'undefined') {
-    throw new Error('Missing data');
+    throw new Error('Missing adults\' physical activity prevalence data');
   } else {
     bmr = calculateBMR(group, params);
     pal = calculatePAL(params, data.adultPAL);
@@ -254,7 +245,6 @@ const calculateER = (groupParameters: Map<number[], AgeGroup>, data: ExtraData):
   const requirements: GroupEnergeticRequirement[] = [];
 
   groupParameters.forEach((group: AgeGroup, params: number[]) => {
-    totalOfPeople += group.population;
     let groupRequirement: GroupEnergeticRequirement;
     switch (group.age) {
       case AgeBracket.m0:
@@ -262,14 +252,20 @@ const calculateER = (groupParameters: Map<number[], AgeGroup>, data: ExtraData):
       case AgeBracket.m2:
       case AgeBracket.m3:
       case AgeBracket.m4:
-      case AgeBracket.m5:
+      case AgeBracket.m5: {
+        groupRequirement = calculateLessThanAYear(group, params);
+        break;
+      }
       case AgeBracket.m6:
       case AgeBracket.m7:
       case AgeBracket.m8:
       case AgeBracket.m9:
       case AgeBracket.m10:
-      case AgeBracket.m11: {
+      case AgeBracket.m11:
+      {
+        totalOfPeople += group.population;
         groupRequirement = calculateLessThanAYear(group, params);
+        totalRequirement += groupRequirement.total;
         break;
       }
       case AgeBracket.a1:
@@ -277,7 +273,9 @@ const calculateER = (groupParameters: Map<number[], AgeGroup>, data: ExtraData):
       case AgeBracket.a3:
       case AgeBracket.a4:
       case AgeBracket.a5: {
+        totalOfPeople += group.population;
         groupRequirement = calculate1To5Years(group, params);
+        totalRequirement += groupRequirement.total;
         break;
       }
       case AgeBracket.a6:
@@ -292,31 +290,38 @@ const calculateER = (groupParameters: Map<number[], AgeGroup>, data: ExtraData):
       case AgeBracket.a15:
       case AgeBracket.a16:
       case AgeBracket.a17: {
+        totalOfPeople += group.population;
         groupRequirement = calculate6To17Years(group, params, data);
+        totalRequirement += groupRequirement.total;
         break;
       }
       case AgeBracket.a18_29: {
+        totalOfPeople += group.population;
         groupRequirement = calculate18To29Years(group, params, data);
+        totalRequirement += groupRequirement.total;
         break;
       }
       case AgeBracket.a30_59: {
+        totalOfPeople += group.population;
         groupRequirement = calculate30To59Years(group, params, data);
+        totalRequirement += groupRequirement.total;
         break;
       }
       case AgeBracket.a60: {
+        totalOfPeople += group.population;
         groupRequirement = calculate60PlusYears(group, params, data);
+        totalRequirement += groupRequirement.total;
         break;
       }
       default: {
-        throw new Error('Parsing error, attribute edad does not respect format');
+        throw new Error(`Parsing error, attribute edad does not respect format. ${group.age} is not a valid age bracket.`);
       }
     }
-    totalRequirement += groupRequirement.total;
     requirements.push(groupRequirement);
   });
 
   const totalER: EnergeticRequirement = {
-    perCapita: totalRequirement / totalOfPeople,
+    perCapita: Math.round(totalRequirement / totalOfPeople),
     total: totalRequirement,
     totalPopulation: totalOfPeople,
   };
diff --git a/src/Services/ParameterService.ts b/src/Services/ParameterService.ts
index 194cd53ed392969741a397e23e00f4d20bf06ce8..85e69c0f27fab6e8012e737f4658af6e9c5af7dd 100644
--- a/src/Services/ParameterService.ts
+++ b/src/Services/ParameterService.ts
@@ -9,6 +9,14 @@ import EquationConstant from '../Models/EquationConstant';
 import DefaultWeight from '../Models/DefaultWeight';
 import DefaultWeightDTO from '../DTOs/DefaultWeightDTO';
 import ParameterWrapperDTO from '../DTOs/ParameterWrapperDTO';
+import { extraDataIDs } from '../Config/Constants';
+
+const pushExtraData = (rows: DefaultExtraData[], arr: number[]): void => {
+  rows.forEach((row: DefaultExtraData) => {
+    const constant: DefaultExtraDataDTO = ParameterMapper.defaultExtraDataToDTO(row);
+    arr.push(constant.value);
+  });
+};
 
 const getEquationValues = async (ageBracket: AgeBracket, sex: Sex): Promise<number[]> => {
   const res: number[] = [];
@@ -46,10 +54,7 @@ const getEquationValues = async (ageBracket: AgeBracket, sex: Sex): Promise<numb
         order: [['order', 'ASC']],
       })
         .then((rows: DefaultExtraData[]) => {
-          rows.forEach((row: DefaultExtraData) => {
-            const constant: DefaultExtraDataDTO = ParameterMapper.defaultExtraDataToDTO(row);
-            res.push(constant.value);
-          });
+          pushExtraData(rows, res);
         });
       break;
     }
@@ -70,12 +75,8 @@ const getEquationValues = async (ageBracket: AgeBracket, sex: Sex): Promise<numb
           order: [['order', 'ASC']],
         })
           .then((rows: DefaultExtraData[]) => {
-            rows.forEach((row: DefaultExtraData) => {
-              const constant: DefaultExtraDataDTO = ParameterMapper.defaultExtraDataToDTO(row);
-              res.push(constant.value);
-            });
+            pushExtraData(rows, res);
           });
-        console.log(res);
       } else {
         await DefaultExtraData.findAll({
           where: {
@@ -87,10 +88,7 @@ const getEquationValues = async (ageBracket: AgeBracket, sex: Sex): Promise<numb
           order: [['order', 'ASC']],
         })
           .then((rows: DefaultExtraData[]) => {
-            rows.forEach((row: DefaultExtraData) => {
-              const constant: DefaultExtraDataDTO = ParameterMapper.defaultExtraDataToDTO(row);
-              res.push(constant.value);
-            });
+            pushExtraData(rows, res);
           });
       }
       break;
@@ -112,12 +110,8 @@ const getEquationValues = async (ageBracket: AgeBracket, sex: Sex): Promise<numb
           order: [['order', 'ASC']],
         })
           .then((rows: DefaultExtraData[]) => {
-            rows.forEach((row: DefaultExtraData) => {
-              const constant: DefaultExtraDataDTO = ParameterMapper.defaultExtraDataToDTO(row);
-              res.push(constant.value);
-            });
+            pushExtraData(rows, res);
           });
-        console.log(res);
       } else {
         await DefaultExtraData.findAll({
           where: {
@@ -129,10 +123,7 @@ const getEquationValues = async (ageBracket: AgeBracket, sex: Sex): Promise<numb
           order: [['order', 'ASC']],
         })
           .then((rows: DefaultExtraData[]) => {
-            rows.forEach((row: DefaultExtraData) => {
-              const constant: DefaultExtraDataDTO = ParameterMapper.defaultExtraDataToDTO(row);
-              res.push(constant.value);
-            });
+            pushExtraData(rows, res);
           });
       }
       break;
@@ -148,10 +139,7 @@ const getEquationValues = async (ageBracket: AgeBracket, sex: Sex): Promise<numb
         order: [['order', 'ASC']],
       })
         .then((rows: DefaultExtraData[]) => {
-          rows.forEach((row: DefaultExtraData) => {
-            const constant: DefaultExtraDataDTO = ParameterMapper.defaultExtraDataToDTO(row);
-            res.push(constant.value);
-          });
+          pushExtraData(rows, res);
         });
       break;
     }
@@ -208,15 +196,14 @@ const getParameters = async (): Promise<ParameterWrapperDTO> => {
   return res;
 };
 
-const updateEquationConstant = async (age: AgeBracket, s: Sex, ord: number, val: number):
-Promise<void> => {
+const updateEquationConstant = async (parameter: EquationConstantDTO): Promise<void> => {
   await EquationConstant.update(
-    { value: val },
+    { value: parameter.value },
     {
       where: {
-        ageRange: age,
-        sex: s,
-        order: ord,
+        ageRange: parameter.ageRange,
+        sex: parameter.sex,
+        order: parameter.order,
       },
     },
   ).catch((err) => {
@@ -224,13 +211,13 @@ Promise<void> => {
   });
 };
 
-const updateDefaultWeight = async (age: AgeBracket, s: Sex, val: number): Promise<void> => {
+const updateDefaultWeight = async (parameter: DefaultWeightDTO): Promise<void> => {
   await DefaultWeight.update(
-    { value: val },
+    { value: parameter.value },
     {
       where: {
-        ageRange: age,
-        sex: s,
+        ageRange: parameter.ageRange,
+        sex: parameter.sex,
       },
     },
   ).catch((err) => {
@@ -238,17 +225,118 @@ const updateDefaultWeight = async (age: AgeBracket, s: Sex, val: number): Promis
   });
 };
 
-const updateExtraData = async (identifier: string, val: number): Promise<void> => {
+const updatePercentage = async (params: DefaultExtraDataDTO[], total: number): Promise<void> => {
+  if (total === 100) {
+    // No se mete en un for porque hay problemas con el await
+    await DefaultExtraData.update(
+      { value: params[0].value },
+      {
+        where: {
+          id: params[0].id,
+        },
+      },
+    ).catch((err) => {
+      throw err;
+    });
+    await DefaultExtraData.update(
+      { value: params[1].value },
+      {
+        where: {
+          id: params[1].id,
+        },
+      },
+    ).catch((err) => {
+      throw err;
+    });
+    await DefaultExtraData.update(
+      { value: params[2].value },
+      {
+        where: {
+          id: params[2].id,
+        },
+      },
+    ).catch((err) => {
+      throw err;
+    });
+  } else {
+    throw new Error('These percentages must add up to 100');
+  }
+};
+
+const updatePair = async (param: DefaultExtraDataDTO, pairID: string): Promise<void> => {
   await DefaultExtraData.update(
-    { value: val },
+    { value: param.value },
     {
       where: {
-        id: identifier,
+        id: param.id,
       },
     },
   ).catch((err) => {
     throw err;
   });
+  await DefaultExtraData.update(
+    { value: (100 - param.value) },
+    {
+      where: {
+        id: pairID,
+      },
+    },
+  ).catch((err) => {
+    throw err;
+  });
+};
+
+const validateID = (id: string): boolean => {
+  const keys: string[] = Object.keys(extraDataIDs);
+  for (let i = 0; i < keys.length; i += 1) {
+    if (extraDataIDs[keys[i]] === id) {
+      return true;
+    }
+  }
+  return false;
+};
+
+const updateExtraData = async (parameters: DefaultExtraDataDTO[]): Promise<void> => {
+  const ids: string[] = [];
+  let total = 0;
+
+  parameters.forEach((param: DefaultExtraDataDTO) => {
+    ids.push(param.id);
+    total += param.value;
+  });
+
+  if (ids.includes(extraDataIDs.minLowPrev)) {
+    if (ids.includes(extraDataIDs.minModPrev) && ids.includes(extraDataIDs.minIntPrev)) {
+      await updatePercentage(parameters, total);
+    } else {
+      throw new Error('Missing parameter for update');
+    }
+  } else if (ids.includes(extraDataIDs.urbPopPerc)) {
+    await updatePair(parameters[0], extraDataIDs.rurPopPerc);
+  } else if (ids.includes(extraDataIDs.rurPopPerc)) {
+    await updatePair(parameters[0], extraDataIDs.urbPopPerc);
+  } else if (ids.includes(extraDataIDs.urbAdultActPerc)) {
+    await updatePair(parameters[0], extraDataIDs.urbAdultLowPerc);
+  } else if (ids.includes(extraDataIDs.urbAdultLowPerc)) {
+    await updatePair(parameters[0], extraDataIDs.urbAdultActPerc);
+  } else if (ids.includes(extraDataIDs.rurAdultActPerc)) {
+    await updatePair(parameters[0], extraDataIDs.rurAdultLowPerc);
+  } else if (ids.includes(extraDataIDs.rurAdultLowPerc)) {
+    await updatePair(parameters[0], extraDataIDs.rurAdultActPerc);
+  } else if (validateID(parameters[0].id)) {
+    await DefaultExtraData.update(
+      { value: parameters[0].value },
+      {
+        where: {
+          id: parameters[0].id,
+        },
+      },
+    ).catch((err) => {
+      throw err;
+    });
+  } else {
+    throw new Error('Invalid parameter ID');
+  }
 };
 
 export default {
@@ -260,334 +348,3 @@ export default {
   updateDefaultWeight,
   updateExtraData,
 };
-
-// const getEquationValues = (ageBracket: AgeBracket, sex: Sex): number[] => {
-//   let res: number[] = [];
-//   switch (ageBracket) {
-//     case (AgeBracket.m0): {
-//       if (sex === Sex.Male) {
-//         // -152 + (92.8*MP) + 211
-//         res = [-152, 92.8, 211];
-//       } else if (sex === Sex.Female) {
-//         // -152 + (92.8*MP) + 178
-//         res = [-152, 92.8, 178];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.m1): {
-//       if (sex === Sex.Male) {
-//         // -152 + (92.8*MP) + 183
-//         res = [-152, 92.8, 183];
-//       } else if (sex === Sex.Female) {
-//         // -152 + (92.8*MP) + 161
-//         res = [-152, 92.8, 161];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.m2): {
-//       if (sex === Sex.Male) {
-//         // -152 + (92.8*MP) + 139
-//         res = [-152, 92.8, 139];
-//       } else if (sex === Sex.Female) {
-//         // -152 + (92.8*MP) + 134
-//         res = [-152, 92.8, 134];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.m3): {
-//       if (sex === Sex.Male) {
-//         // -152 + (92.8*MP) + 53
-//         res = [-152, 92.8, 53];
-//       } else if (sex === Sex.Female) {
-//         // -152 + (92.8*MP) + 68
-//         res = [-152, 92.8, 68];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.m4): {
-//       if (sex === Sex.Male) {
-//         // -152 + (92.8*MP) + 46
-//         res = [-152, 92.8, 46];
-//       } else if (sex === Sex.Female) {
-//         // -152 + (92.8*MP) + 57
-//         res = [-152, 92.8, 57];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.m5): {
-//       if (sex === Sex.Male) {
-//         // -152 + (92.8*MP) + 36
-//         res = [-152, 92.8, 36];
-//       } else if (sex === Sex.Female) {
-//         // -152 + (92.8*MP) + 47
-//         res = [-152, 92.8, 47];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.m6): {
-//       if (sex === Sex.Male) {
-//         // -99.4 + (88.6*MP) + 17
-//         res = [-99.4, 88.6, 17];
-//       } else if (sex === Sex.Female) {
-//         // -99.4 + (88.6*MP) + 20
-//         res = [-99.4, 88.6, 20];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.m7): {
-//       if (sex === Sex.Male) {
-//         // -99.4 + (88.6*MP) + 16
-//         res = [-99.4, 88.6, 16];
-//       } else if (sex === Sex.Female) {
-//         // -99.4 + (88.6*MP) + 17
-//         res = [-99.4, 88.6, 17];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.m8): {
-//       if (sex === Sex.Male) {
-//         // -99.4 + (88.6*MP) + 14
-//         res = [-99.4, 88.6, 14];
-//       } else if (sex === Sex.Female) {
-//         // -99.4 + (88.6*MP) + 15
-//         res = [-99.4, 88.6, 15];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.m9): {
-//       if (sex === Sex.Male) {
-//         // -99.4 + (88.6*MP) + 21
-//         res = [-99.4, 88.6, 21];
-//       } else if (sex === Sex.Female) {
-//         // -99.4 + (88.6*MP) + 18
-//         res = [-99.4, 88.6, 18];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.m10): {
-//       if (sex === Sex.Male) {
-//         // -99.4 + (88.6*MP) + 21
-//         res = [-99.4, 88.6, 21];
-//       } else if (sex === Sex.Female) {
-//         // -99.4 + (88.6*MP) + 15
-//         res = [-99.4, 88.6, 15];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.m11): {
-//       if (sex === Sex.Male) {
-//         // -99.4 + (88.6*MP) + 22
-//         res = [-99.4, 88.6, 22];
-//       } else if (sex === Sex.Female) {
-//         // -99.4 + (88.6*MP) + 14
-//         res = [-99.4, 88.6, 14];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a1): {
-//       if (sex === Sex.Male) {
-//         // 310.2 + (63.3*MP) - 0.263*MP^2 + 13
-//         res = [310.2, 63.3, -0.263, 13];
-//       } else if (sex === Sex.Female) {
-//         // 263.4 + (65.3*MP) - 0.454*MP^2 + 13
-//         res = [263.4, 65.3, -0.454, 13];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a2): {
-//       if (sex === Sex.Male) {
-//         // 310.2 + (63.3*MP) - 0.263*MP^2 + 12
-//         res = [310.2, 63.3, -0.263, 12];
-//       } else if (sex === Sex.Female) {
-//         // 263.4 + (65.3*MP) - 0.454*MP^2 + 13
-//         res = [263.4, 65.3, -0.454, 13];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a3): {
-//       if (sex === Sex.Male) {
-//         // 310.2 + (63.3*MP) - 0.263*MP^2 + 12
-//         res = [310.2, 63.3, -0.263, 12];
-//       } else if (sex === Sex.Female) {
-//         // 263.4 + (65.3*MP) - 0.454*MP^2 + 11
-//         res = [263.4, 65.3, -0.454, 11];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a4): {
-//       if (sex === Sex.Male) {
-//         // 310.2 + (63.3*MP) - 0.263*MP^2 + 11
-//         res = [310.2, 63.3, -0.263, 11];
-//       } else if (sex === Sex.Female) {
-//         // 263.4 + (65.3*MP) - 0.454*MP^2 + 10
-//         res = [263.4, 65.3, -0.454, 10];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a5): {
-//       if (sex === Sex.Male) {
-//         // 310.2 + (63.3*MP) - 0.263*MP^2 + 11
-//         res = [310.2, 63.3, -0.263, 11];
-//       } else if (sex === Sex.Female) {
-//         // 263.4 + (65.3*MP) - 0.454*MP^2 + 10
-//         res = [263.4, 65.3, -0.454, 10];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a6): {
-//       if (sex === Sex.Male) {
-//         // 310.2 + (63.3*MP) - 0.263*MP^2 + 11, -15%/+15% for light/intense TEE
-//         res = [310.2, 63.3, -0.263, 12, 15, 15];
-//       } else if (sex === Sex.Female) {
-//         // 263.4 + (65.3*MP) - 0.454*MP^2 + 10, -15%/+15% for light/intense TEE
-//         res = [263.4, 65.3, -0.454, 13, 15, 15];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a7): {
-//       if (sex === Sex.Male) {
-//         // 310.2 + (63.3*MP) - 0.263*MP^2 + 14, -15%/+15% for light/intense TEE
-//         res = [310.2, 63.3, -0.263, 14, 15, 15];
-//       } else if (sex === Sex.Female) {
-//         // 263.4 + (65.3*MP) - 0.454*MP^2 + 17, -15%/+15% for light/intense TEE
-//         res = [263.4, 65.3, -0.454, 17, 15, 15];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a8): {
-//       if (sex === Sex.Male) {
-//         // 310.2 + (63.3*MP) - 0.263*MP^2 + 16, -15%/+15% for light/intense TEE
-//         res = [310.2, 63.3, -0.263, 16, 15, 15];
-//       } else if (sex === Sex.Female) {
-//         // 263.4 + (65.3*MP) - 0.454*MP^2 + 20, -15%/+15% for light/intense TEE
-//         res = [263.4, 65.3, -0.454, 20, 15, 15];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a9): {
-//       if (sex === Sex.Male) {
-//         // 310.2 + (63.3*MP) - 0.263*MP^2 + 19, -15%/+15% for light/intense TEE
-//         res = [310.2, 63.3, -0.263, 19, 15, 15];
-//       } else if (sex === Sex.Female) {
-//         // 263.4 + (65.3*MP) - 0.454*MP^2 + 23, -15%/+15% for light/intense TEE
-//         res = [263.4, 65.3, -0.454, 23, 15, 15];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a10): {
-//       if (sex === Sex.Male) {
-//         // 310.2 + (63.3*MP) - 0.263*MP^2 + 22, -15%/+15% for light/intense TEE
-//         res = [310.2, 63.3, -0.263, 22, 15, 15];
-//       } else if (sex === Sex.Female) {
-//         // 263.4 + (65.3*MP) - 0.454*MP^2 + 25, -15%/+15% for light/intense TEE
-//         res = [263.4, 65.3, -0.454, 25, 15, 15];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a11): {
-//       if (sex === Sex.Male) {
-//         // 310.2 + (63.3*MP) - 0.263*MP^2 + 25, -15%/+15% for light/intense TEE
-//         res = [310.2, 63.3, -0.263, 25, 15, 15];
-//       } else if (sex === Sex.Female) {
-//         // 263.4 + (65.3*MP) - 0.454*MP^2 + 25, -15%/+15% for light/intense TEE
-//         res = [263.4, 65.3, -0.454, 25, 15, 15];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a12): {
-//       if (sex === Sex.Male) {
-//         // 310.2 + (63.3*MP) - 0.263*MP^2 + 29, -15%/+15% for light/intense TEE
-//         res = [310.2, 63.3, -0.263, 29, 15, 15];
-//       } else if (sex === Sex.Female) {
-//         // 263.4 + (65.3*MP) - 0.454*MP^2 + 26, -15%/+15% for light/intense TEE
-//         res = [263.4, 65.3, -0.454, 26, 15, 15];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a13): {
-//       if (sex === Sex.Male) {
-//         // 310.2 + (63.3*MP) - 0.263*MP^2 + 33, -15%/+15% for light/intense TEE
-//         res = [310.2, 63.3, -0.263, 33, 15, 15];
-//       } else if (sex === Sex.Female) {
-//         // 263.4 + (65.3*MP) - 0.454*MP^2 + 24, -15%/+15% for light/intense TEE
-//         res = [263.4, 65.3, -0.454, 24, 15, 15];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a14): {
-//       if (sex === Sex.Male) {
-//         // 310.2 + (63.3*MP) - 0.263*MP^2 + 33, -15%/+15% for light/intense TEE
-//         res = [310.2, 63.3, -0.263, 33, 15, 15];
-//       } else if (sex === Sex.Female) {
-//         // 263.4 + (65.3*MP) - 0.454*MP^2 + 19, -15%/+15% for light/intense TEE
-//         res = [263.4, 65.3, -0.454, 19, 15, 15];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a15): {
-//       if (sex === Sex.Male) {
-//         // 310.2 + (63.3*MP) - 0.263*MP^2 + 31, -15%/+15% for light/intense TEE
-//         res = [310.2, 63.3, -0.263, 31, 15, 15];
-//       } else if (sex === Sex.Female) {
-//         // 263.4 + (65.3*MP) - 0.454*MP^2 + 13, -15%/+15% for light/intense TEE
-//         res = [263.4, 65.3, -0.454, 13, 15, 15];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a16): {
-//       if (sex === Sex.Male) {
-//         // 310.2 + (63.3*MP) - 0.263*MP^2 + 24, -15%/+15% for light/intense TEE
-//         res = [310.2, 63.3, -0.263, 24, 15, 15];
-//       } else if (sex === Sex.Female) {
-//         // 263.4 + (65.3*MP) - 0.454*MP^2 + 5, -15%/+15% for light/intense TEE
-//         res = [263.4, 65.3, -0.454, 5, 15, 15];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a17): {
-//       if (sex === Sex.Male) {
-//         // 310.2 + (63.3*MP) - 0.263*MP^2 + 14, -15%/+15% for light/intense TEE
-//         res = [310.2, 63.3, -0.263, 14, 15, 15];
-//       } else if (sex === Sex.Female) {
-//         // 263.4 + (65.3*MP) - 0.454*MP^2 + 0, -15%/+15% for light/intense TEE
-//         res = [263.4, 65.3, -0.454, 0, 15, 15];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a18_29): {
-//       if (sex === Sex.Male) {
-//         // (15.057*MP + 692.2) * PAL
-//         res = [15.057, 692.2, 1.95, 1.65, 1.85, 1.55];
-//       } else if (sex === Sex.Female) {
-//         // (14.818*MP + 486.6) * PAL, 208 and 251 extra energy for pregnant and lactating women
-//         res = [14.818, 486.6, 1.95, 1.65, 1.85, 1.55, 208, 251];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a30_59): {
-//       if (sex === Sex.Male) {
-//         // (11.472*MP + 873.1) * PAL
-//         res = [11.472, 873.1, 1.95, 1.65, 1.85, 1.55];
-//       } else if (sex === Sex.Female) {
-//         // (8.126*MP + 845.6) * PAL, 208 and 251 extra energy for pregnant and lactating women
-//         res = [8.126, 845.6, 1.95, 1.65, 1.85, 1.55, 208, 251];
-//       }
-//       break;
-//     }
-//     case (AgeBracket.a60): {
-//       if (sex === Sex.Male) {
-//         // (11.711*MP + 587.7) * PAL
-//         res = [11.711, 587.7, 1.95, 1.65, 1.85, 1.55];
-//       } else if (sex === Sex.Female) {
-//         // (9.082*MP + 658.5) * PAL
-//         res = [9.082, 658.5, 1.95, 1.65, 1.85, 1.55];
-//       }
-//       break;
-//     }
-
-//     default: {
-//       throw new Error('Parsing error, attribute edad does not respect format');
-//     }
-//   }
-//   return res;
-// };
diff --git a/src/Services/ParserService.ts b/src/Services/ParserService.ts
index 16ee980f3e3da9946be2186daba74d15bca66ca0..afa7841f154f530f15db93b9290d304d16ba65eb 100644
--- a/src/Services/ParserService.ts
+++ b/src/Services/ParserService.ts
@@ -3,29 +3,16 @@ import AgeGroupJSON from '../DTOs/AgeGroupJSON';
 import AgeBracket from '../Enum/AgeBracket';
 import Sex from '../Enum/Sex';
 
-const checkAgeGroup = (group: AgeGroupJSON): boolean => (
-  typeof (group.age) !== 'string'
-  || typeof (group.sex) !== 'string'
-  || typeof (group.medianWeight) !== 'number'
-  || typeof (group.population) !== 'number'
-  || group.medianWeight <= 0
-  || group.population <= 0
-);
-
 const parseGroups = (groups: AgeGroupJSON[]): AgeGroup[] => {
   const retGroups: AgeGroup[] = [];
   groups.forEach((ageGroup: AgeGroupJSON) => {
-    if (checkAgeGroup(ageGroup)) {
-      throw new Error('Age group data does not meet specification');
-    } else {
-      const group: AgeGroup = {
-        age: ageGroup.age as AgeBracket,
-        sex: ageGroup.sex as Sex,
-        medianWeight: ageGroup.medianWeight,
-        population: ageGroup.population,
-      };
-      retGroups.push(group);
-    }
+    const group: AgeGroup = {
+      age: ageGroup.age as AgeBracket,
+      sex: ageGroup.sex as Sex,
+      medianWeight: ageGroup.medianWeight,
+      population: ageGroup.population,
+    };
+    retGroups.push(group);
   });
   return retGroups;
 };
@@ -41,159 +28,3 @@ const unparseGroup = (group: AgeGroup): AgeGroupJSON => {
 };
 
 export default { parseGroups, unparseGroup };
-
-// const parseSex = (sexo: string): Sex => {
-//   let sex: Sex = sexo;
-//   switch (sexo) {
-//     case 'Masculino': {
-//       sex = Sex.Masculino;
-//       break;
-//     }
-//     case 'Femenino': {
-//       sex = Sex.Femenino;
-//       break;
-//     }
-//     default: {
-//       throw new Error('Parsing error, attribute sexo does not respect format');
-//     }
-//   }
-//   return sex;
-// };
-//
-// const parseAge = (edad: string): AgeBracket => {
-//   let age: AgeBracket;
-//   switch (edad) {
-//     case '0 meses': {
-//       age = AgeBracket.m0;
-//       break;
-//     }
-//     case '1 mes': {
-//       age = AgeBracket.m1;
-//       break;
-//     }
-//     case '2 meses': {
-//       age = AgeBracket.m2;
-//       break;
-//     }
-//     case '3 meses': {
-//       age = AgeBracket.m3;
-//       break;
-//     }
-//     case '4 meses': {
-//       age = AgeBracket.m4;
-//       break;
-//     }
-//     case '5 meses': {
-//       age = AgeBracket.m5;
-//       break;
-//     }
-//     case '6 meses': {
-//       age = AgeBracket.m6;
-//       break;
-//     }
-//     case '7 meses': {
-//       age = AgeBracket.m7;
-//       break;
-//     }
-//     case '8 meses': {
-//       age = AgeBracket.m8;
-//       break;
-//     }
-//     case '9 meses': {
-//       age = AgeBracket.m9;
-//       break;
-//     }
-//     case '10 meses': {
-//       age = AgeBracket.m10;
-//       break;
-//     }
-//     case '11 meses': {
-//       age = AgeBracket.m11;
-//       break;
-//     }
-//     case '1 año': {
-//       age = AgeBracket.a1;
-//       break;
-//     }
-//     case '2 años': {
-//       age = AgeBracket.a2;
-//       break;
-//     }
-//     case '3 años': {
-//       age = AgeBracket.a3;
-//       break;
-//     }
-//     case '4 años': {
-//       age = AgeBracket.a4;
-//       break;
-//     }
-//     case '5 años': {
-//       age = AgeBracket.a5;
-//       break;
-//     }
-//     case '6 años': {
-//       age = AgeBracket.a6;
-//       break;
-//     }
-//     case '7 años': {
-//       age = AgeBracket.a7;
-//       break;
-//     }
-//     case '8 años': {
-//       age = AgeBracket.a8;
-//       break;
-//     }
-//     case '9 años': {
-//       age = AgeBracket.a9;
-//       break;
-//     }
-//     case '10 años': {
-//       age = AgeBracket.a10;
-//       break;
-//     }
-//     case '11 años': {
-//       age = AgeBracket.a11;
-//       break;
-//     }
-//     case '12 años': {
-//       age = AgeBracket.a12;
-//       break;
-//     }
-//     case '13 años': {
-//       age = AgeBracket.a13;
-//       break;
-//     }
-//     case '14 años': {
-//       age = AgeBracket.a14;
-//       break;
-//     }
-//     case '15 años': {
-//       age = AgeBracket.a15;
-//       break;
-//     }
-//     case '16 años': {
-//       age = AgeBracket.a16;
-//       break;
-//     }
-//     case '17 años': {
-//       age = AgeBracket.a17;
-//       break;
-//     }
-//     case '18-29 años': {
-//       age = AgeBracket.a18_29;
-//       break;
-//     }
-//     case '30-59 años': {
-//       age = AgeBracket.a30_59;
-//       break;
-//     }
-//     case '60+ años': {
-//       age = AgeBracket.a60;
-//       break;
-//     }
-//     default: {
-//       throw new Error('Parsing error, attribute edad does not respect format');
-//     }
-//   }
-//   return age;
-// };
diff --git a/swagger.yaml b/swagger.yaml
index 228a7e12bcb69a3636ab85d3ec34ffcc3bf0629f..ebfacb136c61c2c2e41c54be04be58b14549b510 100644
--- a/swagger.yaml
+++ b/swagger.yaml
@@ -255,11 +255,13 @@ components:
         - extraData
     Parameter:
       properties:
-        parameter:
-          oneOf:
-            - $ref: '#/components/schemas/WeightParameter'
-            - $ref: '#/components/schemas/ExtraDataParameter'
-            - $ref: '#/components/schemas/EquationConstantParameter'
+        parameters:
+          type: array
+          items:
+            oneOf:
+              - $ref: '#/components/schemas/WeightParameter'
+              - $ref: '#/components/schemas/ExtraDataParameter'
+              - $ref: '#/components/schemas/EquationConstantParameter'
     WeightParameter:
       properties:
         parameterType: