From 90798962be9ebb8d279a842df2d1eb7338331c4f Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 24 Jul 2024 13:38:27 +0000 Subject: [PATCH 1/2] TOP - Error al anular prestacion * **AM:** se modifica la distancia para sacar turnos por mobile ([#1881](https://github.com/andes/api/issues/1881)) ([#1883](https://github.com/andes/api/issues/1883)) ([e13a6fc](https://github.com/andes/api/commit/e13a6fc7c59f6709f49b70bf772fee27d51fabeb)) * **CITAS:** corrige errores en job cerrar demanda insatisfecha ([#1920](https://github.com/andes/api/issues/1920)) ([01d6c5f](https://github.com/andes/api/commit/01d6c5fbe50b9a0a2a2229a48fe4cad5be7c7321)) * **HUDS:** controla permisos para ver la HUDS ([#1871](https://github.com/andes/api/issues/1871)) ([756c2b1](https://github.com/andes/api/commit/756c2b1b61bcb8595646472f1e0daae31674bd51)) --- .../rup/controllers/solicitudes.controller.ts | 8 ++++++++ modules/rup/routes/prestacion.ts | 17 ++++++++++++----- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/modules/rup/controllers/solicitudes.controller.ts b/modules/rup/controllers/solicitudes.controller.ts index 09b121464..f91e6c1ba 100644 --- a/modules/rup/controllers/solicitudes.controller.ts +++ b/modules/rup/controllers/solicitudes.controller.ts @@ -118,6 +118,14 @@ async function matchReglas(prestacion: IPrestacion, planes: IPrestacionRegistro[ return Promise.all(ps); } +export async function cancelarPrestacionSolicitud(req, prestacion) { + prestacion.ejecucion = { registros: [], organizacion: {}, fecha: null }; + prestacion.estados.push({ tipo: 'pendiente' }); + updateRegistroHistorialSolicitud(prestacion.solicitud, { op: 'pendiente' }); + const solicitud: any = new Prestacion(prestacion); + Auth.audit(solicitud, req); + await solicitud.save(); +} EventCore.on('rup:prestacion:validate', async (prestacion: IPrestacion) => { // [TODO] chequear duplicados al revalidar diff --git a/modules/rup/routes/prestacion.ts b/modules/rup/routes/prestacion.ts index 0a9d5d490..eb130dc5c 100755 --- a/modules/rup/routes/prestacion.ts +++ b/modules/rup/routes/prestacion.ts @@ -17,7 +17,7 @@ import { dashboardSolicitudes } from '../controllers/estadisticas'; import * as frecuentescrl from '../controllers/frecuentesProfesional'; import { hudsPaciente, saveEnHistorial, updateRegistroHistorialSolicitud } from '../controllers/prestacion'; import { registrosProfundidad } from '../controllers/rup'; -import { buscarYCrearSolicitudes } from '../controllers/solicitudes.controller'; +import { buscarYCrearSolicitudes, cancelarPrestacionSolicitud } from '../controllers/solicitudes.controller'; import { IPrestacionDoc } from '../prestaciones.interface'; import { Prestacion } from '../schemas/prestacion'; import { Auth } from './../../../auth/auth.class'; @@ -593,7 +593,6 @@ router.patch('/prestaciones/:id', (req: Request, res, next) => { if (data.inicio === 'top') { updateRegistroHistorialSolicitud(data.solicitud, req.body); } - switch (req.body.op) { case 'paciente': if (req.body.paciente) { @@ -615,7 +614,11 @@ router.patch('/prestaciones/:id', (req: Request, res, next) => { } if (req.body.estado.tipo === 'anulada') { EventCore.emitAsync('rup:prestacion:anular', data); - if (data.inicio !== 'top') { + if (data.inicio === 'top') { + req.body.estado.tipo = 'auditoria'; + data.ejecucion = { registros: [], organizacion: {}, fecha: null }; + data.solicitud.profesional = null; + } else { const prestacion = await saveEnHistorial(data, req.body.estado, req); await Prestacion.findOneAndRemove({ _id: data._id }); return res.json(prestacion); @@ -653,7 +656,6 @@ router.patch('/prestaciones/:id', (req: Request, res, next) => { if (req.body.solicitud?.tipoPrestacion) { data.solicitud.tipoPrestacion = req.body.solicitud.tipoPrestacion; } - break; case 'romperValidacion': if (data.estadoActual.tipo !== 'validada') { @@ -701,10 +703,15 @@ router.patch('/prestaciones/:id', (req: Request, res, next) => { } break; case 'desasociarTurno': - data.solicitud.turno = null; const prestation_back = await saveEnHistorial(data, { tipo: 'anulada' }, req); EventCore.emitAsync('rup:prestacion:anular', data); await Prestacion.findOneAndRemove({ _id: data._id }); + if (data.inicio === 'top') { + await cancelarPrestacionSolicitud(req, data); + } else { + data.solicitud.turno = null; + await Prestacion.findOneAndRemove({ _id: data._id }); + } const agenda: any = await Agenda.findById({ _id: req.body.idAgenda }); if (agenda) { if (req.body.tipoTurno === 'turno') { From fa8d8d842484b5ac55c306f8ca1ffab08ad2cb77 Mon Sep 17 00:00:00 2001 From: MarianoCampetella Date: Wed, 28 Jan 2026 09:48:29 -0300 Subject: [PATCH 2/2] Solicitud anulada --- modules/rup/routes/prestacion.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/rup/routes/prestacion.ts b/modules/rup/routes/prestacion.ts index eb130dc5c..7ff31f2f5 100755 --- a/modules/rup/routes/prestacion.ts +++ b/modules/rup/routes/prestacion.ts @@ -614,7 +614,7 @@ router.patch('/prestaciones/:id', (req: Request, res, next) => { } if (req.body.estado.tipo === 'anulada') { EventCore.emitAsync('rup:prestacion:anular', data); - if (data.inicio === 'top') { + if (data.inicio === 'top' && !req.body.estado.observaciones) { req.body.estado.tipo = 'auditoria'; data.ejecucion = { registros: [], organizacion: {}, fecha: null }; data.solicitud.profesional = null;