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 72b75491b4..88f1291503 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 @@ -48,8 +48,7 @@ - {{ (internacion.idPrestacion?.unidadOrganizativa?.term) || - (internacion.estadosCama[0]?.estados[0]?.unidadOrganizativa?.term) }} + {{ getUltimaUnidadOrganizativa(internacion) }} 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 fd2dcf2937..d0925d434a 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 @@ -77,8 +77,8 @@ export class ListadoInternacionCapasComponent implements OnInit, OnDestroy { 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 || ''; + const nameA = this.getUltimaUnidadOrganizativa(a) || ''; + const nameB = this.getUltimaUnidadOrganizativa(b) || ''; return nameA.localeCompare(nameB); } } @@ -144,6 +144,26 @@ export class ListadoInternacionCapasComponent implements OnInit, OnDestroy { this.location.back(); } + getUltimaUnidadOrganizativa(internacion: any): string { + const estadosCama = internacion.estadosCama; + if (!estadosCama?.length) { + return internacion.idPrestacion?.unidadOrganizativa?.term; + } + let ultimoEstadoConPaciente: any = null; + for (const cama of estadosCama) { + if (cama.estados && cama.estados.length > 0) { + for (const estado of cama.estados) { + if (estado.paciente) { + if (!ultimoEstadoConPaciente || new Date(estado.fecha) > new Date(ultimoEstadoConPaciente.fecha)) { + ultimoEstadoConPaciente = estado; + } + } + } + } + } + return ultimoEstadoConPaciente?.unidadOrganizativa?.term || internacion.idPrestacion?.unidadOrganizativa?.term; + } + cancelar() { this.mapaCamasService.selectResumen(null); this.mapaCamasService.selectPrestacion(null); 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 3b257816f7..73741fd26a 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 @@ -96,14 +96,37 @@ export class ListadoInternacionCapasService { } if (unidad) { + const unidadId = unidad?.conceptId || unidad; listaInternacionFiltrada = listaInternacionFiltrada.filter( - (internacion: IResumenInternacion) => - (internacion as any).idPrestacion?.unidadOrganizativa?.conceptId === (unidad?.conceptId || unidad) + (internacion: any) => { + const uoEfectiva = this.getUltimaUnidadOrganizativaConceptId(internacion); + return uoEfectiva === unidadId; + } ); } return listaInternacionFiltrada; } + getUltimaUnidadOrganizativaConceptId(internacion: any): string { + const estadosCama = internacion.estadosCama; + if (!estadosCama?.length) { + return internacion.idPrestacion?.unidadOrganizativa?.conceptId; + } + let ultimoEstadoConPaciente: any = null; + for (const cama of estadosCama) { + if (cama.estados?.length) { + for (const estado of cama.estados) { + if (estado.paciente) { + if (!ultimoEstadoConPaciente || new Date(estado.fecha) > new Date(ultimoEstadoConPaciente.fecha)) { + ultimoEstadoConPaciente = estado; + } + } + } + } + } + return ultimoEstadoConPaciente?.unidadOrganizativa?.conceptId || internacion.idPrestacion?.unidadOrganizativa?.conceptId; + } + setFechaHasta(fecha: Date) { this.fechaIngresoHasta.next(fecha); }