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);
}