diff --git a/__test__/ParameterService.test.ts b/__test__/ParameterService.test.ts index 8c0ce46a09b151e85626edbea538b230d29f434c..86704090172e06f3846fc3acce62928939cfaf2c 100644 --- a/__test__/ParameterService.test.ts +++ b/__test__/ParameterService.test.ts @@ -1,8 +1,21 @@ import '@testing-library/jest-dom/extend-expect'; +import AgeBracket from '../src/Enum/AgeBracket'; +import Sex from '../src/Enum/Sex'; import ParameterService from '../src/Services/ParameterService'; -describe('Verificar si devuelve todos los pesos por defecto', () => { +describe('Verificar si devuelve los parametros correctamente', () => { it('Pesos por defecto', async () => { - expect((await ParameterService.getDefaultWeights()).length).toBe(12); + expect((await ParameterService.getDefaultWeights()).length).toBe(64); + }); + it('Datos Extra', async () => { + expect((await ParameterService.getDefaultExtraData()).length).toBe(13); + }); + it('Constantes de ecuacion', async () => { + expect(new Set(await ParameterService.getEquationValues(AgeBracket.a1, Sex.Male))) + .toEqual(new Set([310.2, 63.3, -0.263, 13])); + }); + it('Constantes de ecuacion', async () => { + expect(new Set(await ParameterService.getEquationValues(AgeBracket.a10, Sex.Female))) + .toEqual(new Set([263.4, 65.3, -0.454, 25, -15, 15])); }); }); diff --git a/package-lock.json b/package-lock.json index 697832275391792349e3d73579d4e626e88bf1a1..c85b0b255988303a8be0b33d08b0581455221367 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1850,7 +1850,6 @@ "version": "1.19.1", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz", "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==", - "dev": true, "requires": { "@types/connect": "*", "@types/node": "*" @@ -1860,7 +1859,6 @@ "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, "requires": { "@types/node": "*" } @@ -1881,7 +1879,6 @@ "version": "4.17.13", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dev": true, "requires": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.18", @@ -1893,7 +1890,6 @@ "version": "4.17.24", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", - "dev": true, "requires": { "@types/node": "*", "@types/qs": "*", @@ -1957,8 +1953,7 @@ "@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "@types/node": { "version": "16.9.6", @@ -1980,20 +1975,17 @@ "@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" }, "@types/range-parser": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "@types/serve-static": { "version": "1.13.10", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "dev": true, "requires": { "@types/mime": "^1", "@types/node": "*" @@ -4217,6 +4209,17 @@ } } }, + "express-json-validator-middleware": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/express-json-validator-middleware/-/express-json-validator-middleware-2.2.1.tgz", + "integrity": "sha512-9Y3A6QMNBRLcPmnN1KhsntyT4BKxb6KIhwiaV+y/YlAA/UJnTZTcZ9n0qGSX1LRdtV85YZL44M2d9jAcTW3fHA==", + "requires": { + "@types/express": "^4.17.3", + "@types/express-serve-static-core": "^4.17.2", + "@types/json-schema": "^7.0.4", + "ajv": "^6.6.2" + } + }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", @@ -6634,6 +6637,55 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, + "mysql2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.3.0.tgz", + "integrity": "sha512-0t5Ivps5Tdy5YHk5NdKwQhe/4Qyn2pload+S+UooDBvsqngtzujG1BaTWBihQLfeKO3t3122/GtusBtmHEHqww==", + "requires": { + "denque": "^1.4.1", + "generate-function": "^2.3.1", + "iconv-lite": "^0.6.2", + "long": "^4.0.0", + "lru-cache": "^6.0.0", + "named-placeholders": "^1.1.2", + "seq-queue": "^0.0.5", + "sqlstring": "^2.3.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "named-placeholders": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz", + "integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==", + "requires": { + "lru-cache": "^4.1.3" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + }, "nanocolors": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz", @@ -9071,4 +9123,4 @@ } } } -} \ No newline at end of file +} diff --git a/package.json b/package.json index 5e4a466769cac07cbc235505c68a252c6555b984..565f98539672dea43c09a0d6c76f4b02103abef7 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "cors": "^2.8.5", "dotenv": "^10.0.0", "express": "^4.17.1", + "express-json-validator-middleware": "^2.2.1", "gulp-eslint": "^6.0.0", "helmet": "^4.6.0", "mysql2": "^2.3.0", @@ -73,4 +74,4 @@ "git add" ] } -} \ No newline at end of file +} diff --git a/src/Controllers/CalculatorController.ts b/src/Controllers/CalculatorController.ts index 253c559d838140e897019b6e1e4b14339da663d1..91db8387271d961d2b9691c5d8fe151fd206ce3d 100644 --- a/src/Controllers/CalculatorController.ts +++ b/src/Controllers/CalculatorController.ts @@ -1,12 +1,16 @@ import { Handler, Request, Response, Router, } from 'express'; +import { Validator } from 'express-json-validator-middleware'; import CalculatorService from '../Services/CalculatorService'; import CalculatorResponse from '../DTOs/CalculatorResponseDTO'; import logger from '../Logger/logger'; +import getRepBody from '../Schemas/getRepBody'; const router = Router(); +const { validate } = new Validator({}); + const getREP: Handler = async (req: Request, res: Response) => { const { groups, extraData } = req.body; try { @@ -21,6 +25,6 @@ const getREP: Handler = async (req: Request, res: Response) => { } }; -router.post('/', getREP); +router.post('/', validate({ body: getRepBody }), getREP); export default router; diff --git a/src/Controllers/ParameterController.ts b/src/Controllers/ParameterController.ts index 1cf49463913181c8b20ac7f878f9da12056fb7d6..b409a429f58af9a375ddd528dad7975ba98c4227 100644 --- a/src/Controllers/ParameterController.ts +++ b/src/Controllers/ParameterController.ts @@ -1,12 +1,16 @@ import { Handler, Request, Response, Router, } from 'express'; +import { Validator } from 'express-json-validator-middleware'; import ParameterType from '../Enum/ParameterType'; import logger from '../Logger/logger'; +import updateParameterValueBody from '../Schemas/updateParameterValueBody'; import ParameterService from '../Services/ParameterService'; const router = Router(); +const { validate } = new Validator({}); + const getParameters: Handler = async (req: Request, res: Response) => { try { const parameters = await ParameterService.getParameters(); @@ -74,6 +78,6 @@ const updateParameterValue: Handler = async (req: Request, res: Response) => { router.post('/', getParameters); router.post('/weights/', getDefaultWeights); router.post('/extraData/', getDefaultExtraData); -router.put('/parameterUpdate/', updateParameterValue); +router.put('/parameterUpdate/', validate({ body: updateParameterValueBody }), updateParameterValue); export default router; diff --git a/src/Loaders/DefaultWeightLoader.csv b/src/Loaders/DefaultWeightLoader.csv index 5ee79dea1e4ef0e91b43bff9a5ea3e42fe46796c..32417a4a434e91331302b8a436ca3905f18dc30d 100644 --- a/src/Loaders/DefaultWeightLoader.csv +++ b/src/Loaders/DefaultWeightLoader.csv @@ -1,6 +1,6 @@ age,value,sex 0 meses,3.3,Masculino,Peso por defecto -1 mes,4.5,Masculino,Peso por defecto +1 meses,4.5,Masculino,Peso por defecto 2 meses,5.6,Masculino,Peso por defecto 3 meses,6.4,Masculino,Peso por defecto 4 meses,7,Masculino,Peso por defecto @@ -10,8 +10,8 @@ age,value,sex 8 meses,8.6,Masculino,Peso por defecto 9 meses,8.9,Masculino,Peso por defecto 10 meses,9.2,Masculino,Peso por defecto -11 mes,9.4,Masculino,Peso por defecto -1 año,10.9,Masculino,Peso por defecto +11 meses,9.4,Masculino,Peso por defecto +1 años,10.9,Masculino,Peso por defecto 2 años,13.3,Masculino,Peso por defecto 3 años,15.3,Masculino,Peso por defecto 4 años,17.3,Masculino,Peso por defecto @@ -21,7 +21,7 @@ age,value,sex 8 años,26.8,Masculino,Peso por defecto 9 años,29.6,Masculino,Peso por defecto 10 años,32.9,Masculino,Peso por defecto -11 año,36.7,Masculino,Peso por defecto +11 años,36.7,Masculino,Peso por defecto 12 años,41.6,Masculino,Peso por defecto 13 años,47.4,Masculino,Peso por defecto 14 años,53.7,Masculino,Peso por defecto @@ -32,7 +32,7 @@ age,value,sex 30-59 años,66.6,Masculino,Peso por defecto 60+ años,64.3,Masculino,Peso por defecto 0 meses,3.2,Femenino,Peso por defecto -1 mes,4.2,Femenino,Peso por defecto +1 meses,4.2,Femenino,Peso por defecto 2 meses,5.1,Femenino,Peso por defecto 3 meses,5.8,Femenino,Peso por defecto 4 meses,6.4,Femenino,Peso por defecto @@ -42,8 +42,8 @@ age,value,sex 8 meses,7.9,Femenino,Peso por defecto 9 meses,8.2,Femenino,Peso por defecto 10 meses,8.5,Femenino,Peso por defecto -11 mes,8.7,Femenino,Peso por defecto -1 año,10.2,Femenino,Peso por defecto +11 meses,8.7,Femenino,Peso por defecto +1 años,10.2,Femenino,Peso por defecto 2 años,12.7,Femenino,Peso por defecto 3 años,15,Femenino,Peso por defecto 4 años,17.2,Femenino,Peso por defecto @@ -53,7 +53,7 @@ age,value,sex 8 años,26.7,Femenino,Peso por defecto 9 años,29.9,Femenino,Peso por defecto 10 años,34,Femenino,Peso por defecto -11 año,38.7,Femenino,Peso por defecto +11 años,38.7,Femenino,Peso por defecto 12 años,43.6,Femenino,Peso por defecto 13 años,48.1,Femenino,Peso por defecto 14 años,51.5,Femenino,Peso por defecto diff --git a/src/Loaders/EquationConstantLoader.csv b/src/Loaders/EquationConstantLoader.csv index 616d7b09162f6bf8d6dedc4fff5209140854be83..ded881c07edfb492f00ad6fec26e3704841a8ef7 100644 --- a/src/Loaders/EquationConstantLoader.csv +++ b/src/Loaders/EquationConstantLoader.csv @@ -12,7 +12,7 @@ age,value,parameterType,sex,order,description 60+ años,9.082,TMB,Femenino,0,a 60+ años,658.5,TMB,Femenino,1,a 0 meses,211,Energia para crecimiento,Masculino,2,a -1 mes,183,Energia para crecimiento,Masculino,2,a +1 meses,183,Energia para crecimiento,Masculino,2,a 2 meses,139,Energia para crecimiento,Masculino,2,a 3 meses,53,Energia para crecimiento,Masculino,2,a 4 meses,46,Energia para crecimiento,Masculino,2,a @@ -23,7 +23,7 @@ age,value,parameterType,sex,order,description 9 meses,21,Energia para crecimiento,Masculino,2,a 10 meses,21,Energia para crecimiento,Masculino,2,a 11 meses,22,Energia para crecimiento,Masculino,2,a -1 año,13,Energia para crecimiento,Masculino,3,a +1 años,13,Energia para crecimiento,Masculino,3,a 2 años,12,Energia para crecimiento,Masculino,3,a 3 años,12,Energia para crecimiento,Masculino,3,a 4 años,11,Energia para crecimiento,Masculino,3,a @@ -33,7 +33,7 @@ age,value,parameterType,sex,order,description 8 años,16,Energia para crecimiento,Masculino,3,a 9 años,19,Energia para crecimiento,Masculino,3,a 10 años,22,Energia para crecimiento,Masculino,3,a -11 año,25,Energia para crecimiento,Masculino,3,a +11 años,25,Energia para crecimiento,Masculino,3,a 12 años,29,Energia para crecimiento,Masculino,3,a 13 años,33,Energia para crecimiento,Masculino,3,a 14 años,33,Energia para crecimiento,Masculino,3,a @@ -41,7 +41,7 @@ age,value,parameterType,sex,order,description 16 años,24,Energia para crecimiento,Masculino,3,a 17 años,14,Energia para crecimiento,Masculino,3,a 0 meses,178,Energia para crecimiento,Femenino,2,a -1 mes,161,Energia para crecimiento,Femenino,2,a +1 meses,161,Energia para crecimiento,Femenino,2,a 2 meses,134,Energia para crecimiento,Femenino,2,a 3 meses,68,Energia para crecimiento,Femenino,2,a 4 meses,57,Energia para crecimiento,Femenino,2,a @@ -52,7 +52,7 @@ age,value,parameterType,sex,order,description 9 meses,18,Energia para crecimiento,Femenino,2,a 10 meses,15,Energia para crecimiento,Femenino,2,a 11 meses,14,Energia para crecimiento,Femenino,2,a -1 año,13,Energia para crecimiento,Femenino,3,a +1 años,13,Energia para crecimiento,Femenino,3,a 2 años,13,Energia para crecimiento,Femenino,3,a 3 años,11,Energia para crecimiento,Femenino,3,a 4 años,10,Energia para crecimiento,Femenino,3,a @@ -62,7 +62,7 @@ age,value,parameterType,sex,order,description 8 años,20,Energia para crecimiento,Femenino,3,a 9 años,23,Energia para crecimiento,Femenino,3,a 10 años,25,Energia para crecimiento,Femenino,3,a -11 año,25,Energia para crecimiento,Femenino,3,a +11 años,25,Energia para crecimiento,Femenino,3,a 12 años,26,Energia para crecimiento,Femenino,3,a 13 años,24,Energia para crecimiento,Femenino,3,a 14 años,19,Energia para crecimiento,Femenino,3,a @@ -71,8 +71,8 @@ age,value,parameterType,sex,order,description 17 años,0,Energia para crecimiento,Femenino,3,a 0 meses,-152,GET,Masculino,0,a 0 meses,92.8,GET,Masculino,1,a -1 mes,-152,GET,Masculino,0,a -1 mes,92.8,GET,Masculino,1,a +1 meses,-152,GET,Masculino,0,a +1 meses,92.8,GET,Masculino,1,a 2 meses,-152,GET,Masculino,0,a 2 meses,92.8,GET,Masculino,1,a 3 meses,-152,GET,Masculino,0,a @@ -83,8 +83,8 @@ age,value,parameterType,sex,order,description 5 meses,92.8,GET,Masculino,1,a 0 meses,-152,GET,Femenino,0,a 0 meses,92.8,GET,Femenino,1,a -1 mes,-152,GET,Femenino,0,a -1 mes,92.8,GET,Femenino,1,a +1 meses,-152,GET,Femenino,0,a +1 meses,92.8,GET,Femenino,1,a 2 meses,-152,GET,Femenino,0,a 2 meses,92.8,GET,Femenino,1,a 3 meses,-152,GET,Femenino,0,a @@ -117,9 +117,9 @@ age,value,parameterType,sex,order,description 10 meses,88.6,GET,Femenino,1,a 11 meses,-99.4,GET,Femenino,0,a 11 meses,88.6,GET,Femenino,1,a -1 año,310.2,GET,Masculino,0,a -1 año,63.3,GET,Masculino,1,a -1 año,-0.263,GET,Masculino,2,a +1 años,310.2,GET,Masculino,0,a +1 años,63.3,GET,Masculino,1,a +1 años,-0.263,GET,Masculino,2,a 2 años,310.2,GET,Masculino,0,a 2 años,63.3,GET,Masculino,1,a 2 años,-0.263,GET,Masculino,2,a @@ -147,9 +147,9 @@ age,value,parameterType,sex,order,description 10 años,310.2,GET,Masculino,0,a 10 años,63.3,GET,Masculino,1,a 10 años,-0.263,GET,Masculino,2,a -11 año,310.2,GET,Masculino,0,a -11 año,63.3,GET,Masculino,1,a -11 año,-0.263,GET,Masculino,2,a +11 años,310.2,GET,Masculino,0,a +11 años,63.3,GET,Masculino,1,a +11 años,-0.263,GET,Masculino,2,a 12 años,310.2,GET,Masculino,0,a 12 años,63.3,GET,Masculino,1,a 12 años,-0.263,GET,Masculino,2,a @@ -168,9 +168,9 @@ age,value,parameterType,sex,order,description 17 años,310.2,GET,Masculino,0,a 17 años,63.3,GET,Masculino,1,a 17 años,-0.263,GET,Masculino,2,a -1 año,263.4,GET,Femenino,0,a -1 año,65.3,GET,Femenino,1,a -1 año,-0.454,GET,Femenino,2,a +1 años,263.4,GET,Femenino,0,a +1 años,65.3,GET,Femenino,1,a +1 años,-0.454,GET,Femenino,2,a 2 años,263.4,GET,Femenino,0,a 2 años,65.3,GET,Femenino,1,a 2 años,-0.454,GET,Femenino,2,a @@ -198,9 +198,9 @@ age,value,parameterType,sex,order,description 10 años,263.4,GET,Femenino,0,a 10 años,65.3,GET,Femenino,1,a 10 años,-0.454,GET,Femenino,2,a -11 año,263.4,GET,Femenino,0,a -11 año,65.3,GET,Femenino,1,a -11 año,-0.454,GET,Femenino,2,a +11 años,263.4,GET,Femenino,0,a +11 años,65.3,GET,Femenino,1,a +11 años,-0.454,GET,Femenino,2,a 12 años,263.4,GET,Femenino,0,a 12 años,65.3,GET,Femenino,1,a 12 años,-0.454,GET,Femenino,2,a diff --git a/src/Schemas/getRepBody.ts b/src/Schemas/getRepBody.ts new file mode 100644 index 0000000000000000000000000000000000000000..3eeb9e715be29a113683b565b7a70d89b23d6dbe --- /dev/null +++ b/src/Schemas/getRepBody.ts @@ -0,0 +1,98 @@ +const getRepBody = { + type: 'object' as const, + required: ['groups', 'extraData'], + properties: { + groups: { + type: 'array' as const, + items: { + type: 'object' as const, + required: ['age', 'sex', 'medianWeight', 'population'], + properties: { + age: { + type: 'string' as const, + }, + sex: { + type: 'string' as const, + }, + medianWeight: { + type: 'number' as const, + }, + population: { + type: 'number' as const, + }, + }, + }, + }, + extraData: { + type: 'object' as const, + properties: { + minorPAL: { + type: 'object' as const, + required: ['lowPALPrevalence', 'moderatePALPrevalence', 'intensePALPrevalence'], + properties: { + lowPALPrevalence: { + type: 'number' as const, + }, + moderatePALPrevalence: { + type: 'number' as const, + }, + intensePALPrevalence: { + type: 'number' as const, + }, + }, + }, + adultPAL: { + 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 }, + }, + }, + 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 }, + }, + oneOf: [ + { + required: ['pregnantWomen', 'lactatingWomen'], + }, + { + required: ['countryBirthRate', 'countryWomenInAgeGroup', 'countryPopulation'], + }, + ], + }, + 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 }, + }, + oneOf: [ + { + required: ['pregnantWomen', 'lactatingWomen'], + }, + { + required: ['countryBirthRate', 'countryWomenInAgeGroup', 'countryPopulation'], + }, + ], + }, + }, + }, + + }, +}; + +export default getRepBody; diff --git a/src/Schemas/updateParameterValueBody.ts b/src/Schemas/updateParameterValueBody.ts new file mode 100644 index 0000000000000000000000000000000000000000..538a0c4a94ec0f1f6b57f7cbc1942584196cff5f --- /dev/null +++ b/src/Schemas/updateParameterValueBody.ts @@ -0,0 +1,30 @@ +const updateParameterValueBody = { + type: 'object' as const, + required: ['parameter'], + properties: { + parameter: { + type: 'object' as const, + required: ['id', 'value', 'parameterType', 'order', 'description'], + properties: { + 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, + }, + }, + }, + + }, +}; + +export default updateParameterValueBody;