From d622d1bc8dc5bf88dbdc0ff74c67fc27bac56000 Mon Sep 17 00:00:00 2001 From: Mariano Andres Botta Date: Tue, 6 Oct 2020 12:14:58 -0300 Subject: [PATCH] feat(rup: crear solicitudes en background) --- .../listado-internacion.component.ts | 10 +- .../prestacionValidacion.component.ts | 17 +--- .../rup/services/prestaciones.service.ts | 93 +------------------ 3 files changed, 7 insertions(+), 113 deletions(-) diff --git a/src/app/apps/rup/mapa-camas/views/listado-internacion/listado-internacion.component.ts b/src/app/apps/rup/mapa-camas/views/listado-internacion/listado-internacion.component.ts index 90f0439cf6..ee2bc4c802 100644 --- a/src/app/apps/rup/mapa-camas/views/listado-internacion/listado-internacion.component.ts +++ b/src/app/apps/rup/mapa-camas/views/listado-internacion/listado-internacion.component.ts @@ -53,10 +53,10 @@ export class InternacionListadoComponent implements OnInit { this.selectedPrestacion$ = this.mapaCamasService.selectedPrestacion.pipe( map((prestacion) => { this.puedeValidar = (prestacion.ejecucion && prestacion.ejecucion.registros[1] && - prestacion.estados[prestacion.estados.length - 1].tipo !== 'validada' && - prestacion.ejecucion.registros[1].valor.InformeEgreso.fechaEgreso && - prestacion.ejecucion.registros[1].valor.InformeEgreso.tipoEgreso && - prestacion.ejecucion.registros[1].valor.InformeEgreso.diagnosticoPrincipal); + prestacion.estados[prestacion.estados.length - 1].tipo !== 'validada' && + prestacion.ejecucion.registros[1].valor.InformeEgreso.fechaEgreso && + prestacion.ejecucion.registros[1].valor.InformeEgreso.tipoEgreso && + prestacion.ejecucion.registros[1].valor.InformeEgreso.diagnosticoPrincipal); this.puedeRomper = (prestacion.ejecucion && prestacion.ejecucion.registros[1] && prestacion.estados[prestacion.estados.length - 1].tipo === 'validada'); return prestacion; }) @@ -150,7 +150,7 @@ export class InternacionListadoComponent implements OnInit { if (egresoExiste && selectedPrestacion.estados[selectedPrestacion.estados.length - 1].tipo !== 'validada') { if (egresoExiste.InformeEgreso.fechaEgreso && egresoExiste.InformeEgreso.tipoEgreso && egresoExiste.InformeEgreso.diagnosticoPrincipal) { - this.prestacionService.validarPrestacion(selectedPrestacion, []).subscribe(prestacion => { + this.prestacionService.validarPrestacion(selectedPrestacion).subscribe(prestacion => { this.listadoInternacionService.setFechaHasta(fechaHasta); this.mapaCamasService.selectPrestacion(prestacion); this.verificarPrestacion(prestacion); diff --git a/src/app/modules/rup/components/ejecucion/prestacionValidacion.component.ts b/src/app/modules/rup/components/ejecucion/prestacionValidacion.component.ts index 6cb23333d6..7c4242b04f 100644 --- a/src/app/modules/rup/components/ejecucion/prestacionValidacion.component.ts +++ b/src/app/modules/rup/components/ejecucion/prestacionValidacion.component.ts @@ -302,24 +302,9 @@ export class PrestacionValidacionComponent implements OnInit, OnDestroy { return false; } else { let seCreoSolicitud = false; - // cargar los conceptos mas frecuentes por profesional y tipo de prestación - // Se copian los registros de la ejecución actual, para agregarle la frecuencia let registros = this.prestacion.ejecucion.registros; - // filtramos los planes que deben generar prestaciones pendientes (Planes con conceptos turneales) - - let seccionesRegistros = [...registros]; - registros.forEach(registro => { - if (registro.hasSections) { // COLONO O EPICRISIS - registro.registros.forEach(seccion => { - if (seccion.isSection && !seccion.noIndex) { - seccionesRegistros = [...seccionesRegistros, ...seccion.registros]; - } - }); - } - }); - let planes = seccionesRegistros.filter(r => r.esSolicitud); - this.servicioPrestacion.validarPrestacion(this.prestacion, planes).subscribe(prestacion => { + this.servicioPrestacion.validarPrestacion(this.prestacion).subscribe(prestacion => { this.prestacion = prestacion; let recorrerRegistros = registro => { if (registro.relacionadoCon && registro.relacionadoCon.length > 0) { diff --git a/src/app/modules/rup/services/prestaciones.service.ts b/src/app/modules/rup/services/prestaciones.service.ts index bfe7f1c3eb..6a498a4074 100644 --- a/src/app/modules/rup/services/prestaciones.service.ts +++ b/src/app/modules/rup/services/prestaciones.service.ts @@ -578,97 +578,7 @@ export class PrestacionesService { return this.post(prestacion); } - validarPrestacion(prestacion, planes): Observable { - let planesCrear = undefined; - let planesAux = undefined; - let postRequest = []; - - if (planes.length) { - planesCrear = []; - planesAux = []; - planes.forEach(plan => { - if (plan.semanticTag !== 'metadato fundacional') { - // verificamos si existe la prestacion creada anteriormente. Para no duplicar. - let existePrestacion = null; - if (this.cache[prestacion.paciente.id]) { - existePrestacion = this.cache[prestacion.paciente.id].find(p => (p.estados[p.estados.length - 1].tipo === 'pendiente' || p.estados[p.estados.length - 1].tipo === 'auditoria') && p.solicitud.prestacionOrigen === prestacion.id && p.solicitud.registros[0]._id === plan.id); - } - if (!existePrestacion && plan.valor && (plan.valor.solicitudPrestacion.organizacionDestino || plan.valor.solicitudPrestacion.autocitado)) { - if (!plan.valor.solicitudPrestacion.organizacionDestino) { - plan.valor.solicitudPrestacion.organizacionDestino = this.auth.organizacion; - } - planesAux.push(plan); - } - } - }); - planesAux.forEach(plan => { - let reglas = this.servicioReglas.get({ - organizacionOrigen: this.auth.organizacion.id, - prestacionOrigen: prestacion.solicitud.tipoPrestacion.conceptId, - prestacionDestino: plan.valor.solicitudPrestacion.prestacionSolicitada.conceptId, - organizacionDestino: plan.valor.solicitudPrestacion.organizacionDestino.id - }); - postRequest.push(reglas); - }); - } - if (postRequest && postRequest.length) { - return forkJoin(postRequest).pipe( - switchMap((reglas: any) => { - for (let i = 0; i < reglas.length; i++) { - const regla = reglas[i][0]; - let prestacionOrigen; - let prestacionDestino; - if (regla) { - prestacionOrigen = regla.origen.prestaciones.find(p => p.prestacion.conceptId === prestacion.solicitud.tipoPrestacion.conceptId); - prestacionDestino = regla.destino.prestacion; // para utilizar los datos de la regla y no un sinonimo - } else { - prestacionOrigen = prestacion.solicitud.tipoPrestacion; - prestacionDestino = planesAux[i].valor.solicitudPrestacion.prestacionSolicitada; // para utilizar los datos de la regla y no un sinonimo - } - // creamos objeto de prestacion - let nuevaPrestacion = this.inicializarPrestacion(prestacion.paciente, prestacionDestino, 'validacion', 'ambulatorio'); - // asignamos el tipoPrestacionOrigen a la solicitud - nuevaPrestacion.solicitud.tipoPrestacionOrigen = prestacionOrigen.prestacion ? prestacionOrigen.prestacion : prestacion.solicitud.tipoPrestacion; - if (prestacionOrigen.auditable) { - nuevaPrestacion['estados'] = [{ - fecha: new Date(), - tipo: 'auditoria' - }]; - } - // asignamos la prestacion de origen - nuevaPrestacion.solicitud.prestacionOrigen = prestacion.id; - - // Asignamos organizacionOrigen y profesionalOrigen de la solicitud originada - nuevaPrestacion.solicitud.organizacionOrigen = prestacion.solicitud.organizacion; - nuevaPrestacion.solicitud.profesionalOrigen = prestacion.solicitud.profesional; - - // Si se asignó una organización destino desde la prestación que origina la solicitud - if (planesAux[i].valor.solicitudPrestacion.organizacionDestino) { - nuevaPrestacion.solicitud.organizacion = planesAux[i].valor.solicitudPrestacion.organizacionDestino; - } - // Si se asignó un profesional destino desde la prestación que origina la solicitud - if (!planesAux[i].valor.solicitudPrestacion.autocitado) { - nuevaPrestacion.solicitud.profesional = {}; - } - if (planesAux[i].valor.solicitudPrestacion.profesionalesDestino) { - nuevaPrestacion.solicitud.profesional = planesAux[i].valor.solicitudPrestacion.profesionalesDestino[0]; - } - - // agregamos los registros en la solicitud - nuevaPrestacion.solicitud.registros.push(planesAux[i]); - - planesCrear.push(nuevaPrestacion); - - } - return this.efectuarPatch(prestacion, planesCrear); - }) - ); - } else { - return this.efectuarPatch(prestacion, undefined); - } - } - - private efectuarPatch(prestacion, planesCrear): Observable { + validarPrestacion(prestacion): Observable { prestacion.ejecucion.registros.forEach(x => { if (x.relacionadoCon && x.relacionadoCon.length) { x.relacionadoCon.forEach(y => { @@ -679,7 +589,6 @@ export class PrestacionesService { let dto: any = { op: 'estadoPush', estado: { tipo: 'validada' }, - ...(planesCrear && planesCrear.length) && { planes: planesCrear }, registros: prestacion.ejecucion.registros, registrarFrecuentes: true };