From fc55319637be3aa4060410098476ed101a7e62e2 Mon Sep 17 00:00:00 2001 From: chin Date: Sun, 13 Nov 2022 01:24:48 +0800 Subject: [PATCH] fix: return empty body when pass validation - Return the isError and validation Operation Outcome --- api/FHIRApiService/$validate.js | 5 +++-- api/FHIRApiService/create.js | 4 ++-- api/FHIRApiService/update.js | 6 +++--- utils/validator/processor.js | 10 ++++++++-- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/api/FHIRApiService/$validate.js b/api/FHIRApiService/$validate.js index f9542473..f6db8fff 100644 --- a/api/FHIRApiService/$validate.js +++ b/api/FHIRApiService/$validate.js @@ -28,9 +28,10 @@ module.exports = async function (req, res, resourceType) { if (process.env.ENABLE_VALIDATOR === "true") { let { validateResource } = require("../../utils/validator/processor"); - let operationOutcomeMessage = await validateResource(req.body); + let validationResult = await validateResource(req.body); - if (operationOutcomeMessage) return doRes(422, operationOutcomeMessage); + if (validationResult.isError) return doRes(422, validationResult.message); + else operationOutcomeMessage = validationResult.message; } else { operationOutcomeMessage = await getValidateResult(req, resourceType); let haveError = (_.get(operationOutcomeMessage, "issue")) ? operationOutcomeMessage.issue.find(v=> v.severity === "error") : false; diff --git a/api/FHIRApiService/create.js b/api/FHIRApiService/create.js index d68ce26d..77c8c7e9 100644 --- a/api/FHIRApiService/create.js +++ b/api/FHIRApiService/create.js @@ -112,9 +112,9 @@ module.exports = async function(req, res , resourceType) { // Validate user request body if (process.env.ENABLE_VALIDATOR) { let { validateResource } = require("../../utils/validator/processor"); - let validationErrorMessage = await validateResource(req.body); + let validationResult = await validateResource(req.body); - if (validationErrorMessage) return doRes(422, validationErrorMessage); + if (validationResult.isError) return doRes(422, validationResult.message); } let [status, doc] = await doInsertData(cloneInsertData, resourceType); diff --git a/api/FHIRApiService/update.js b/api/FHIRApiService/update.js index 83c71681..9b8114e6 100644 --- a/api/FHIRApiService/update.js +++ b/api/FHIRApiService/update.js @@ -92,9 +92,9 @@ module.exports = async function (req, res, resourceType) { // Validate user request body if (process.env.ENABLE_VALIDATOR) { let { validateResource } = require("../../utils/validator/processor"); - let validationErrorMessage = await validateResource(req.body); - - if (validationErrorMessage) return doRes(422, validationErrorMessage); + let validationResult = await validateResource(req.body); + + if (validationResult.isError) return doRes(422, validationResult.message); } let dataExist = await isDocExist(req.params.id, resourceType); diff --git a/utils/validator/processor.js b/utils/validator/processor.js index bb8ef8cf..cd93ac73 100644 --- a/utils/validator/processor.js +++ b/utils/validator/processor.js @@ -18,9 +18,15 @@ const { validator } = require("./index.js"); if (Object.prototype.hasOwnProperty.call(operationOutcome, "issue")) { let isError = operationOutcome.issue.some(v => v.severity === "error"); if (isError) { - return operationOutcome; + return { + isError: true, + message: operationOutcome + }; } - return undefined; + return { + isError: false, + message: operationOutcome + }; } }