diff --git a/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/filtros-listado/filtros-listado-capas.component.html b/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/filtros-listado/filtros-listado-capas.component.html index 228770f81a..14bb53541f 100644 --- a/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/filtros-listado/filtros-listado-capas.component.html +++ b/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/filtros-listado/filtros-listado-capas.component.html @@ -1,6 +1,10 @@ + + diff --git a/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/filtros-listado/filtros-listado-capas.component.ts b/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/filtros-listado/filtros-listado-capas.component.ts index 6ba249736b..651a8f0d4c 100644 --- a/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/filtros-listado/filtros-listado-capas.component.ts +++ b/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/filtros-listado/filtros-listado-capas.component.ts @@ -2,6 +2,9 @@ import { Component, OnInit } from '@angular/core'; import * as enumerados from '../../../../../../utils/enumerados'; import { PermisosMapaCamasService } from '../../../services/permisos-mapa-camas.service'; import { ListadoInternacionCapasService } from '../listado-internacion-capas.service'; +import { Auth } from '@andes/auth'; +import { OrganizacionService } from 'src/app/services/organizacion.service'; +import { Observable } from 'rxjs'; @Component({ selector: 'app-filtros-listado-capas', @@ -13,24 +16,30 @@ export class FiltrosListadoCapasComponent implements OnInit { fechaIngresoDesde: moment().subtract(1, 'months').toDate(), fechaIngresoHasta: moment().toDate(), fechaEgresoDesde: null, - fechaEgresoHasta: null + fechaEgresoHasta: null, + unidadOrganizativa: null }; + unidadesOrganizativas$: Observable; estadosInternacion; requestInProgress: boolean; constructor( private listadoInternacionService: ListadoInternacionCapasService, public permisosMapaCamasService: PermisosMapaCamasService, + private auth: Auth, + private organizacionService: OrganizacionService ) { } ngOnInit() { this.resetFiltros(); this.estadosInternacion = enumerados.getObjEstadoInternacion(); + this.unidadesOrganizativas$ = this.organizacionService.unidadesOrganizativas(this.auth.organizacion.id); } resetFiltros() { this.listadoInternacionService.pacienteText.next(null); this.listadoInternacionService.estado.next(null); + this.listadoInternacionService.unidadOrganizativa.next(null); this.filtrarFecha(); } @@ -41,6 +50,8 @@ export class FiltrosListadoCapasComponent implements OnInit { } else { this.listadoInternacionService.estado.next(null); } + const unidadId = this.filtros.unidadOrganizativa?.conceptId || this.filtros.unidadOrganizativa; + this.listadoInternacionService.unidadOrganizativa.next(unidadId); } filtrarFecha() { diff --git a/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/listado-internacion-capas.component.html b/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/listado-internacion-capas.component.html index ce9fba14be..72b75491b4 100644 --- a/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/listado-internacion-capas.component.html +++ b/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/listado-internacion-capas.component.html @@ -47,7 +47,10 @@ {{ internacion.fechaEgreso | hora }} - + + {{ (internacion.idPrestacion?.unidadOrganizativa?.term) || + (internacion.estadosCama[0]?.estados[0]?.unidadOrganizativa?.term) }} + diff --git a/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/listado-internacion-capas.component.ts b/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/listado-internacion-capas.component.ts index 34d315b0d6..fd2dcf2937 100644 --- a/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/listado-internacion-capas.component.ts +++ b/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/listado-internacion-capas.component.ts @@ -70,6 +70,17 @@ export class ListadoInternacionCapasComponent implements OnInit, OnDestroy { sorteable: true, opcional: true, sort: (a: any, b: any) => a.fechaEgreso?.getTime() - b.fechaEgreso?.getTime() + }, + { + key: 'unidadOrganizativa', + label: 'Unidad Organizativa', + sorteable: true, + opcional: true, + sort: (a: any, b: any) => { + const nameA = a.idPrestacion?.unidadOrganizativa?.term || a.estadosCama?.[0]?.estados?.[0]?.unidadOrganizativa?.term || ''; + const nameB = b.idPrestacion?.unidadOrganizativa?.term || b.estadosCama?.[0]?.estados?.[0]?.unidadOrganizativa?.term || ''; + return nameA.localeCompare(nameB); + } } ]; diff --git a/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/listado-internacion-capas.service.ts b/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/listado-internacion-capas.service.ts index 395d3da7ca..3b257816f7 100644 --- a/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/listado-internacion-capas.service.ts +++ b/src/app/apps/rup/mapa-camas/views/listado-internacion-capas/listado-internacion-capas.service.ts @@ -18,6 +18,7 @@ export class ListadoInternacionCapasService { public refresh = new BehaviorSubject(null); public missingFilters$: Observable; public estado = new BehaviorSubject(null); + public unidadOrganizativa = new BehaviorSubject(null); constructor( private resumenHTTP: InternacionResumenHTTP, @@ -28,15 +29,17 @@ export class ListadoInternacionCapasService { this.fechaIngresoHasta, this.fechaEgresoDesde, this.fechaEgresoHasta, + this.unidadOrganizativa, this.refresh ]).pipe( auditTime(0), - switchMap(([fechaIngresoDesde, fechaIngresoHasta, fechaEgresoDesde, fechaEgresoHasta, refresh]) => { + switchMap(([fechaIngresoDesde, fechaIngresoHasta, fechaEgresoDesde, fechaEgresoHasta, unidad, refresh]) => { if ((fechaIngresoDesde && fechaIngresoHasta) || fechaEgresoDesde && fechaEgresoHasta) { return this.resumenHTTP.getListado({ idOrganizacion: this.auth.organizacion.id, ingreso: this.resumenHTTP.queryDateParams(fechaIngresoDesde, fechaIngresoHasta), egreso: this.resumenHTTP.queryDateParams(fechaEgresoDesde, fechaEgresoHasta), + unidad: unidad?.conceptId || unidad, populate: 'idPrestacion' }).pipe( map(resumen => { @@ -50,10 +53,11 @@ export class ListadoInternacionCapasService { this.listaInternacionFiltrada$ = combineLatest([ this.listaInternacion$, this.pacienteText, - this.estado + this.estado, + this.unidadOrganizativa ]).pipe( - map(([listaInternacion, paciente, estado]) => - this.filtrarListaInternacion(listaInternacion, paciente) + map(([listaInternacion, paciente, estado, unidad]) => + this.filtrarListaInternacion(listaInternacion, paciente, unidad) ) ); @@ -72,7 +76,7 @@ export class ListadoInternacionCapasService { ), cache(); } - filtrarListaInternacion(listaInternacion: IResumenInternacion[], paciente: string) { + filtrarListaInternacion(listaInternacion: IResumenInternacion[], paciente: string, unidad: any) { let listaInternacionFiltrada = listaInternacion; if (paciente) { const esNumero = Number.isInteger(Number(paciente)); @@ -90,6 +94,13 @@ export class ListadoInternacionCapasService { ); } } + + if (unidad) { + listaInternacionFiltrada = listaInternacionFiltrada.filter( + (internacion: IResumenInternacion) => + (internacion as any).idPrestacion?.unidadOrganizativa?.conceptId === (unidad?.conceptId || unidad) + ); + } return listaInternacionFiltrada; } 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 5ddcddb234..03ea834772 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 @@ -3,6 +3,10 @@
+ +