diff --git a/src/app/apps/rup/mapa-camas/services/mapa-camas.service.ts b/src/app/apps/rup/mapa-camas/services/mapa-camas.service.ts index e749404027..21ce490cc9 100644 --- a/src/app/apps/rup/mapa-camas/services/mapa-camas.service.ts +++ b/src/app/apps/rup/mapa-camas/services/mapa-camas.service.ts @@ -4,7 +4,7 @@ import { Observable, BehaviorSubject, combineLatest, of, timer } from 'rxjs'; import { ISnapshot } from '../interfaces/ISnapshot'; import { IMaquinaEstados, IMAQRelacion, IMAQEstado } from '../interfaces/IMaquinaEstados'; import { MapaCamasHTTP } from './mapa-camas.http'; -import { switchMap, map, pluck, catchError, startWith, multicast, filter, tap } from 'rxjs/operators'; +import { switchMap, map, pluck, catchError, startWith, multicast, filter } from 'rxjs/operators'; import { ISectores } from '../../../../interfaces/IOrganizacion'; import { ISnomedConcept } from '../../../../modules/rup/interfaces/snomed-concept.interface'; import { IPrestacion } from '../../../../modules/rup/interfaces/prestacion.interface'; @@ -262,7 +262,7 @@ export class MapaCamasService { private getCamasDisponiblesCama(camas: ISnapshot[], cama: ISnapshot) { let camasMismaUO = []; let camasDistintaUO = []; - if (cama.id) { + if (cama?.id) { camas.map(c => { if (c.sala || c.estado === 'disponible') { if (c.id !== cama.id) { diff --git a/src/app/apps/rup/mapa-camas/sidebar/cama-detalle/internacion-detalle/internacion-detalle.component.html b/src/app/apps/rup/mapa-camas/sidebar/cama-detalle/internacion-detalle/internacion-detalle.component.html index b021ac898a..294b2dc892 100644 --- a/src/app/apps/rup/mapa-camas/sidebar/cama-detalle/internacion-detalle/internacion-detalle.component.html +++ b/src/app/apps/rup/mapa-camas/sidebar/cama-detalle/internacion-detalle/internacion-detalle.component.html @@ -25,7 +25,7 @@ diff --git a/src/app/apps/rup/mapa-camas/sidebar/desocupar-cama/cambiar-cama.component.ts b/src/app/apps/rup/mapa-camas/sidebar/desocupar-cama/cambiar-cama.component.ts index 80d713090d..ee6bc1b0f7 100644 --- a/src/app/apps/rup/mapa-camas/sidebar/desocupar-cama/cambiar-cama.component.ts +++ b/src/app/apps/rup/mapa-camas/sidebar/desocupar-cama/cambiar-cama.component.ts @@ -2,17 +2,16 @@ import { Component, OnInit, Input, Output, EventEmitter, OnDestroy } from '@angu import { Auth } from '@andes/auth'; import { MapaCamasService } from '../../services/mapa-camas.service'; import { Plex } from '@andes/plex'; -import { Observable, combineLatest, Subscription, forkJoin, of } from 'rxjs'; +import { Observable, combineLatest, forkJoin, of } from 'rxjs'; import { ISnapshot } from '../../interfaces/ISnapshot'; -import { filter, map, switchMap, take } from 'rxjs/operators'; -import { IMaquinaEstados } from '../../interfaces/IMaquinaEstados'; +import { map, switchMap, take } from 'rxjs/operators'; @Component({ selector: 'app-cambiar-cama', templateUrl: './cambiar-cama.component.html', }) -export class CambiarCamaComponent implements OnInit, OnDestroy { +export class CambiarCamaComponent implements OnInit { camasDisponibles$: Observable<{ camasMismaUO, camasDistintaUO }>; selectedCama$: Observable; @@ -40,9 +39,6 @@ export class CambiarCamaComponent implements OnInit, OnDestroy { private mapaCamasService: MapaCamasService, ) { } - ngOnDestroy() { - } - ngOnInit() { combineLatest([ this.mapaCamasService.maquinaDeEstado$, diff --git a/src/app/apps/rup/mapa-camas/sidebar/desocupar-cama/desocupar-cama.component.ts b/src/app/apps/rup/mapa-camas/sidebar/desocupar-cama/desocupar-cama.component.ts index 77069dbac7..97bef901ef 100644 --- a/src/app/apps/rup/mapa-camas/sidebar/desocupar-cama/desocupar-cama.component.ts +++ b/src/app/apps/rup/mapa-camas/sidebar/desocupar-cama/desocupar-cama.component.ts @@ -73,7 +73,7 @@ export class CamaDesocuparComponent implements OnInit, OnDestroy { return of(fechaMasUnMinuto); } else { return this.camaSelectedSegunView$.pipe( - map(cama => moment(cama.fecha).add(1, 'm')) + map(cama => moment(cama?.fecha).add(1, 'm')) ); } }), diff --git a/src/app/apps/rup/mapa-camas/sidebar/ingreso/ingresar-paciente.component.ts b/src/app/apps/rup/mapa-camas/sidebar/ingreso/ingresar-paciente.component.ts index d22d918290..f1385603f7 100644 --- a/src/app/apps/rup/mapa-camas/sidebar/ingreso/ingresar-paciente.component.ts +++ b/src/app/apps/rup/mapa-camas/sidebar/ingreso/ingresar-paciente.component.ts @@ -524,6 +524,7 @@ export class IngresarPacienteComponent implements OnInit, OnDestroy { // creamos la prestacion de internacion y agregamos el registro de ingreso const nuevaPrestacion = this.servicioPrestacion.inicializarPrestacion(this.paciente, PrestacionesService.InternacionPrestacion, 'ejecucion', this.mapaCamasService.ambito, this.informeIngreso.fechaIngreso, null, dtoProfesional); nuevaPrestacion.ejecucion.registros = [nuevoRegistro]; + nuevaPrestacion.unidadOrganizativa = this.cama.unidadOrganizativa; nuevaPrestacion.paciente['_id'] = this.paciente.id; this.servicioPrestacion.post(nuevaPrestacion).subscribe(prestacion => { diff --git a/src/app/apps/rup/mapa-camas/views/listado-internacion/filtros-internacion/filtros-internacion.component.html b/src/app/apps/rup/mapa-camas/views/listado-internacion/filtros-internacion/filtros-internacion.component.html index 82afa2650a..37272a624e 100644 --- a/src/app/apps/rup/mapa-camas/views/listado-internacion/filtros-internacion/filtros-internacion.component.html +++ b/src/app/apps/rup/mapa-camas/views/listado-internacion/filtros-internacion/filtros-internacion.component.html @@ -18,6 +18,9 @@ + + diff --git a/src/app/apps/rup/mapa-camas/views/listado-internacion/filtros-internacion/filtros-internacion.component.ts b/src/app/apps/rup/mapa-camas/views/listado-internacion/filtros-internacion/filtros-internacion.component.ts index 5144861f90..41583368b4 100644 --- a/src/app/apps/rup/mapa-camas/views/listado-internacion/filtros-internacion/filtros-internacion.component.ts +++ b/src/app/apps/rup/mapa-camas/views/listado-internacion/filtros-internacion/filtros-internacion.component.ts @@ -4,7 +4,6 @@ import { Auth } from '@andes/auth'; import { DocumentosService } from '../../../../../../services/documentos.service'; import { ListadoInternacionService } from '../listado-internacion.service'; import { PermisosMapaCamasService } from '../../../services/permisos-mapa-camas.service'; -import { ObraSocialService } from 'src/app/services/obraSocial.service'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { arrayToSet } from '@andes/shared'; @@ -23,6 +22,7 @@ export class FiltrosInternacionComponent implements OnInit { }; estadosInternacion; requestInProgress: boolean; + unidadesOrganizativas$: Observable; obraSociales$: Observable; @@ -46,12 +46,25 @@ export class FiltrosInternacionComponent implements OnInit { return rs; }) ); + + this.unidadesOrganizativas$ = this.listadoInternacionService.listaInternacion$.pipe( + map(listado => { + let unidades = []; + listado.forEach(int => { + if (int.unidadOrganizativa && !unidades.some(u => u?.term === int.unidadOrganizativa.term)) { + unidades.push(int.unidadOrganizativa); + } + }); + return unidades; + }) + ); } filtrar() { this.listadoInternacionService.pacienteText.next(this.filtros.paciente); this.listadoInternacionService.estado.next(this.filtros.estado?.id); this.listadoInternacionService.obraSocial.next(this.filtros.obraSocial); + this.listadoInternacionService.unidadOrganizativa.next(this.filtros.unidadOrganizativa); } filtrarFecha() { diff --git a/src/app/apps/rup/mapa-camas/views/listado-internacion/listado-internacion.component.html b/src/app/apps/rup/mapa-camas/views/listado-internacion/listado-internacion.component.html index f29d41f2f5..af6a5a12c3 100644 --- a/src/app/apps/rup/mapa-camas/views/listado-internacion/listado-internacion.component.html +++ b/src/app/apps/rup/mapa-camas/views/listado-internacion/listado-internacion.component.html @@ -20,6 +20,7 @@ Fecha de ingreso Fecha de egreso Obra Social + Unidad Organizativa Estado @@ -47,6 +48,9 @@ {{ internacion.paciente.obraSocial?.nombre }} + + {{ internacion.unidadOrganizativa?.term }} + {{internacion.estados[internacion.estados.length - 1].tipo}} @@ -76,7 +80,7 @@ - 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 3f139cbb8a..6a3fe474ab 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 @@ -22,8 +22,6 @@ export class InternacionListadoComponent implements OnInit { // VARIABLES public mostrar = 'datosInternacion'; - public listaInternacion; - public listaInternacionAux; public cambiarUO = false; public puedeValidar = false; public puedeRomper = false; @@ -122,6 +120,11 @@ export class InternacionListadoComponent implements OnInit { this.mostrar = 'desocuparCama'; } + refresh() { + this.listadoInternacionService.refresh.next(true); + this.volverADetalle(); + } + volverADetalle() { this.mostrar = 'datosInternacion'; } diff --git a/src/app/apps/rup/mapa-camas/views/listado-internacion/listado-internacion.service.ts b/src/app/apps/rup/mapa-camas/views/listado-internacion/listado-internacion.service.ts index 047f4b6f27..dc0469954e 100644 --- a/src/app/apps/rup/mapa-camas/views/listado-internacion/listado-internacion.service.ts +++ b/src/app/apps/rup/mapa-camas/views/listado-internacion/listado-internacion.service.ts @@ -1,9 +1,9 @@ import { Injectable } from '@angular/core'; import { IPrestacion } from '../../../../../modules/rup/interfaces/prestacion.interface'; import { Observable, BehaviorSubject, combineLatest } from 'rxjs'; -import { Auth } from '@andes/auth'; import { switchMap, map, auditTime } from 'rxjs/operators'; import { MapaCamasHTTP } from '../../services/mapa-camas.http'; +import { cache } from '@andes/shared'; @Injectable() export class ListadoInternacionService { @@ -16,11 +16,12 @@ export class ListadoInternacionService { public fechaIngresoHasta = new BehaviorSubject(moment().toDate()); public fechaEgresoDesde = new BehaviorSubject(null); public fechaEgresoHasta = new BehaviorSubject(null); + public unidadOrganizativa = new BehaviorSubject(null); public estado = new BehaviorSubject(null); public obraSocial = new BehaviorSubject(null); + public refresh = new BehaviorSubject(null); constructor( - private auth: Auth, private mapaHTTP: MapaCamasHTTP, ) { this.listaInternacion$ = combineLatest( @@ -28,9 +29,10 @@ export class ListadoInternacionService { this.fechaIngresoHasta, this.fechaEgresoDesde, this.fechaEgresoHasta, + this.refresh ).pipe( auditTime(1), - switchMap(([fechaIngresoDesde, fechaIngresoHasta, fechaEgresoDesde, fechaEgresoHasta]) => { + switchMap(([fechaIngresoDesde, fechaIngresoHasta, fechaEgresoDesde, fechaEgresoHasta, refresh]) => { if (fechaIngresoDesde && fechaIngresoHasta) { const filtros = { fechaIngresoDesde, fechaIngresoHasta, @@ -39,22 +41,24 @@ export class ListadoInternacionService { return this.mapaHTTP.getPrestacionesInternacion(filtros); } - }) + }), + cache() ); this.listaInternacionFiltrada$ = combineLatest( this.listaInternacion$, this.pacienteText, this.estado, - this.obraSocial + this.obraSocial, + this.unidadOrganizativa ).pipe( - map(([listaInternacion, paciente, estado, obraSocial]) => - this.filtrarListaInternacion(listaInternacion, paciente, estado, obraSocial) + map(([listaInternacion, paciente, estado, obraSocial, unidad]) => + this.filtrarListaInternacion(listaInternacion, paciente, estado, obraSocial, unidad) ) ); } - filtrarListaInternacion(listaInternacion: IPrestacion[], paciente: string, estado: string, obraSocial: any) { + filtrarListaInternacion(listaInternacion: IPrestacion[], paciente: string, estado: string, obraSocial: any, unidad: any) { let listaInternacionFiltrada = listaInternacion; if (paciente) { @@ -83,6 +87,13 @@ export class ListadoInternacionService { } ); } + + if (unidad) { + listaInternacionFiltrada = listaInternacionFiltrada.filter((internacion: IPrestacion) => + internacion.unidadOrganizativa?.term === unidad.term + ); + } + return listaInternacionFiltrada; } diff --git a/src/app/modules/rup/interfaces/prestacion.interface.ts b/src/app/modules/rup/interfaces/prestacion.interface.ts index 0a1179797a..0a68b85e8c 100644 --- a/src/app/modules/rup/interfaces/prestacion.interface.ts +++ b/src/app/modules/rup/interfaces/prestacion.interface.ts @@ -6,7 +6,6 @@ import { IObraSocial } from '../../../interfaces/IObraSocial'; export class IPrestacion { id: string; trackId: string; - unidadOrganizativa: ISnomedConcept; elementoRUP: string; // Datos principales del paciente paciente: { @@ -70,7 +69,7 @@ export class IPrestacion { // Historia de estado de la prestaciĆ³n estados: IPrestacionEstado[]; estadoActual: IPrestacionEstado; - + unidadOrganizativa: ISnomedConcept; createdAt: Date; updatedAt: Date;