diff --git a/src/Services/ERCalculator.ts b/src/Services/ERCalculator.ts
new file mode 100644
index 0000000000000000000000000000000000000000..684fb08a1213b96b6467c22c6a439112d5ec77ce
--- /dev/null
+++ b/src/Services/ERCalculator.ts
@@ -0,0 +1,41 @@
+import AgeGroup from '../Models/AgeGroup';
+import EnergeticRequirement from '../Models/EnergeticRequirement';
+import CalculatorResponseDTO from '../DTOs/CalculatorResponseDTO';
+
+const calculateER = (groupParameters: Map<number[], AgeGroup>): CalculatorResponseDTO => {
+  let totalOfPeople = 0;
+  let totalRequirement = 0;
+
+  const requirements = new Map();
+
+  groupParameters.forEach((group: AgeGroup, parameters: number[]) => {
+    totalOfPeople = +group.cantidad;
+
+    const requirement = parameters[0]
+    + (parameters[1] * group.pesoMediano)
+    + (parameters[2] * group.pesoMediano);
+
+    const groupRequirement: EnergeticRequirement = {
+      requerimientoEnergeticoPerCapita: requirement,
+      requerimientoEnergeticoTotal: requirement * group.cantidad,
+    };
+
+    totalRequirement = +groupRequirement.requerimientoEnergeticoTotal;
+
+    requirements.set(group, groupRequirement);
+  });
+
+  const totalER: EnergeticRequirement = {
+    requerimientoEnergeticoPerCapita: totalRequirement / totalOfPeople,
+    requerimientoEnergeticoTotal: totalOfPeople,
+  };
+
+  const result: CalculatorResponseDTO = {
+    requerimientosPorGrupo: requirements,
+    requerimientoTotal: totalER,
+  };
+
+  return result;
+};
+
+export default { calculateER };