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..7ff31f2f5 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.observaciones) { + 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') {