diff --git a/modules/recetas/receta-schema.ts b/modules/recetas/receta-schema.ts index 0f24cf2cf..fcb699d53 100644 --- a/modules/recetas/receta-schema.ts +++ b/modules/recetas/receta-schema.ts @@ -19,7 +19,7 @@ export const motivosRecetaSchema = new mongoose.Schema({ const estadosSchema = new mongoose.Schema({ tipo: { type: String, - enum: ['pendiente', 'vigente', 'finalizada', 'vencida', 'suspendida', 'rechazada'], + enum: ['pendiente', 'vigente', 'finalizada', 'vencida', 'suspendida', 'rechazada','eliminada'], required: true, default: 'vigente' }, diff --git a/modules/recetas/recetas.routes.ts b/modules/recetas/recetas.routes.ts index e7e96a14f..61a4dba8a 100644 --- a/modules/recetas/recetas.routes.ts +++ b/modules/recetas/recetas.routes.ts @@ -46,13 +46,13 @@ export const patch = async (req, res) => { let result, status; const { recetaId, recetas, dataDispensa } = req.body; const app = req.user.app?.nombre ? req.user.app.nombre.toLowerCase() : ''; - if (!recetaId && !recetas) { + if ((!recetaId && !recetas)) { const error = new ParamsIncorrect(); res.status(error.status).json(error); } else { switch (operacion) { case 'suspender': - result = await suspender(recetas, req); + result = await suspender(recetaId, req); break; case 'dispensar': case 'dispensa-parcial': diff --git a/modules/recetas/recetasController.ts b/modules/recetas/recetasController.ts index 3778b6e4a..25d4334b9 100644 --- a/modules/recetas/recetasController.ts +++ b/modules/recetas/recetasController.ts @@ -228,23 +228,18 @@ export async function obtenerRecetasPorGrupo(recetaIds) { } } -export async function suspender(recetas, req) { +export async function suspender(recetaId, req) { const motivo = req.body.motivo; const observacion = req.body.observacion; const profesional = req.body.profesional; try { - if (!recetas) { - throw new ParamsIncorrect(); - } - const recetasASuspender = await obtenerRecetasPorGrupo(recetas); - const promises = recetas.map(async (recetaId) => { - - const receta: any = await Receta.findById(recetaId); - - if (!receta) { - throw new RecetaNotFound(); - } - if (!receta.medicamento.tratamientoProlongado) { + const recetaR: any = await Receta.findById(recetaId); + const recetasASuspender = await Receta.find( { + 'medicamento.concepto.conceptId': recetaR.medicamento.concepto.conceptId, + idRegistro: recetaR.idRegistro + }); + const promises = recetasASuspender.map(async (receta: any) => { + if ((receta.estadoActual.tipo === 'vigente') || (receta.estadoDispensaActual.tipo === 'dispensa-parcial' && receta.estadoActual.tipo === 'pendiente')) { receta.estados.push({ tipo: 'suspendida', motivo, @@ -254,14 +249,10 @@ export async function suspender(recetas, req) { }); Auth.audit(receta, req); await receta.save(); - - const idRegistro = receta.idRegistro; - const medicamento = receta.medicamento?.concepto.conceptId; - await Receta.deleteMany({ idRegistro, 'medicamento.concepto.conceptId': medicamento, 'estadoActual.tipo': 'pendiente', 'estadoDispensaActual.tipo': 'sin-dispensa' }); } else { - if (recetasASuspender.some(r => r.id.toString() === receta.id.toString())) { + if (receta.estadoDispensaActual.tipo === 'sin-dispensa' && receta.estadoActual.tipo === 'pendiente') { receta.estados.push({ - tipo: 'suspendida', + tipo: 'eliminada', motivo, observacion, profesional, @@ -269,17 +260,14 @@ export async function suspender(recetas, req) { }); Auth.audit(receta, req); await receta.save(); - } else { - const _id = receta.id; - const medicamento = receta.medicamento?.concepto.conceptId; - await Receta.deleteOne({ _id }); } } }); await Promise.all(promises); + return { success: true }; } catch (error) { - await updateLog.error('suspender', { motivo, observacion, profesional, recetas }, error); + await updateLog.error('suspender', { motivo, observacion, profesional, recetaId }, error); return error; } }