diff --git a/src/app/apps/rup/mapa-camas/mapa-camas.module.ts b/src/app/apps/rup/mapa-camas/mapa-camas.module.ts index 9066429f6e..f8f83d0d7a 100644 --- a/src/app/apps/rup/mapa-camas/mapa-camas.module.ts +++ b/src/app/apps/rup/mapa-camas/mapa-camas.module.ts @@ -70,6 +70,7 @@ import { IngresoPacienteService } from './sidebar/ingreso/ingreso-paciente-workf import { PeriodosCensablesComponent } from './sidebar/periodos-censables/periodos-censables.component'; import { ListadoMedicamentosCapasComponent } from './views/listado-internacion-capas/listado-medicamentos-capas.component'; import { CITASLibModule } from '../../../components/turnos/citas.module'; +import { MapaCamasResumenComponent } from './views/mapa-camas-capa/mapa-camas-resumen.component'; export const INTERNACION_COMPONENTS = [ MapaCamasMainComponent, @@ -116,7 +117,8 @@ export const INTERNACION_COMPONENTS = [ RecursosListadoComponent, ResumenInternacionComponent, TimelineMapaCamasComponent, - PeriodosCensablesComponent + PeriodosCensablesComponent, + MapaCamasResumenComponent ]; export const INTERNACION_PROVIDERS = [ diff --git a/src/app/apps/rup/mapa-camas/mapa-camas.routing.ts b/src/app/apps/rup/mapa-camas/mapa-camas.routing.ts index c715072b00..200e19dcb4 100644 --- a/src/app/apps/rup/mapa-camas/mapa-camas.routing.ts +++ b/src/app/apps/rup/mapa-camas/mapa-camas.routing.ts @@ -13,6 +13,7 @@ import { MapaCamasCapaComponent } from './views/mapa-camas-capa/mapa-camas-capa. import { ResumenInternacionComponent } from './views/resumen-internacion/resumen-internacion.component'; import { SalaComunComponent } from './views/sala-comun/sala-comun.component'; import { TimelineMapaCamasComponent } from './views/timelinea-mapa-camas/timeline-mapa-camas.component'; +import { MapaCamasResumenComponent } from './views/mapa-camas-capa/mapa-camas-resumen.component'; export const INTERNACION_ROUTES = [ @@ -52,8 +53,9 @@ export const INTERNACION_ROUTES = [ }, { path: ':ambito/:capa', component: MapaCamasCapaComponent, pathMatch: 'full' }, - - { path: '', redirectTo: 'internacion', pathMatch: 'full' } + { path: ':ambito/:capa/:idOrganizacion', component: MapaCamasCapaComponent, pathMatch: 'full' }, + { path: ':ambito/resumen/:capa/:idOrganizacion', component: MapaCamasResumenComponent, pathMatch: 'full' }, + { path: '', component: MapaCamasMainComponent } ]; diff --git a/src/app/apps/rup/mapa-camas/services/mapa-camas.http.ts b/src/app/apps/rup/mapa-camas/services/mapa-camas.http.ts index e1590ddb4c..2b06054177 100644 --- a/src/app/apps/rup/mapa-camas/services/mapa-camas.http.ts +++ b/src/app/apps/rup/mapa-camas/services/mapa-camas.http.ts @@ -16,7 +16,7 @@ export class MapaCamasHTTP { private server: Server ) { } - snapshot(ambito: string, capa: string, fecha: Date, idInternacion: string = null, estado: string = null, idCama: string = null): Observable { + snapshot(ambito: string, capa: string, fecha: Date, idInternacion: string = null, estado: string = null, idCama: string = null, idOrganizacion: string = null): Observable { return this.server.get(`${this.url}/camas`, { params: { ambito, @@ -24,7 +24,8 @@ export class MapaCamasHTTP { fecha, internacion: idInternacion, estado, - cama: idCama + cama: idCama, + organizacion: idOrganizacion } }); } 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 7d8ef76131..c2320c0beb 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 @@ -107,7 +107,7 @@ export class MapaCamasService { this.fecha2 ]).pipe( switchMap(([ambito, capa, fecha]) => { - return this.camasHTTP.snapshot(ambito, capa, fecha).pipe( + return this.camasHTTP.snapshot(ambito, capa, fecha, null, null, null, this.organizacion2.getValue()).pipe( map(snapshot => [snapshot, fecha]) ); }), @@ -396,11 +396,11 @@ export class MapaCamasService { camasFiltradas = camasFiltradas.filter((snap: ISnapshot) => snap.paciente.documento.includes(paciente) || snap.paciente.numeroIdentificacion?.includes(paciente)); } else { - camasFiltradas = camasFiltradas.filter((snap: ISnapshot) => - (snap.paciente.nombre.toLowerCase().includes(paciente.toLowerCase()) || + camasFiltradas = camasFiltradas.filter((snap: ISnapshot) => ( + snap.paciente.nombre.toLowerCase().includes(paciente.toLowerCase()) || snap.paciente.alias?.toLowerCase().includes(paciente.toLowerCase()) || - snap.paciente.apellido.toLowerCase().includes(paciente.toLowerCase())) - ); + snap.paciente.apellido.toLowerCase().includes(paciente.toLowerCase()) + )); } } diff --git a/src/app/apps/rup/mapa-camas/views/mapa-camas-capa/filtros-cama/filtros-camas.component.html b/src/app/apps/rup/mapa-camas/views/mapa-camas-capa/filtros-cama/filtros-camas.component.html index 2019d869a7..6bca4be673 100644 --- a/src/app/apps/rup/mapa-camas/views/mapa-camas-capa/filtros-cama/filtros-camas.component.html +++ b/src/app/apps/rup/mapa-camas/views/mapa-camas-capa/filtros-cama/filtros-camas.component.html @@ -14,11 +14,12 @@ [data]="estadoList$ | async" (change)="filtrar()"> - -
+
diff --git a/src/app/apps/rup/mapa-camas/views/mapa-camas-capa/filtros-cama/filtros-camas.component.ts b/src/app/apps/rup/mapa-camas/views/mapa-camas-capa/filtros-cama/filtros-camas.component.ts index 7a181aa028..6b16c3d5d0 100644 --- a/src/app/apps/rup/mapa-camas/views/mapa-camas-capa/filtros-cama/filtros-camas.component.ts +++ b/src/app/apps/rup/mapa-camas/views/mapa-camas-capa/filtros-cama/filtros-camas.component.ts @@ -1,5 +1,5 @@ import { arrayToSet } from '@andes/shared'; -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, Input } from '@angular/core'; import { Observable, combineLatest } from 'rxjs'; import { filter, map, tap } from 'rxjs/operators'; import { MapaCamasService } from '../../../services/mapa-camas.service'; @@ -22,6 +22,8 @@ export class FiltrosCamasComponent implements OnInit { public paciente = ''; public collapse = true; + @Input() filtroCompleto = true; + filtro: any = {}; censables = [ { id: 0, nombre: 'No censable' }, diff --git a/src/app/apps/rup/mapa-camas/views/mapa-camas-capa/mapa-camas-capa.component.ts b/src/app/apps/rup/mapa-camas/views/mapa-camas-capa/mapa-camas-capa.component.ts index 7fe8585d65..3ed121fcf2 100644 --- a/src/app/apps/rup/mapa-camas/views/mapa-camas-capa/mapa-camas-capa.component.ts +++ b/src/app/apps/rup/mapa-camas/views/mapa-camas-capa/mapa-camas-capa.component.ts @@ -113,7 +113,9 @@ export class MapaCamasCapaComponent implements OnInit, OnDestroy { this.ws.connect(); this.mapaCamasService.resetView(); const ambito = this.route.snapshot.paramMap.get('ambito'); + const idOrganizacion = this.route.snapshot.paramMap.get('idOrganizacion') ? this.route.snapshot.paramMap.get('idOrganizacion') : this.auth.organizacion.id; this.mapaCamasService.setAmbito(ambito); + this.mapaCamasService.setOrganizacion(idOrganizacion); this.permisosMapaCamasService.setAmbito(ambito); this.mainView$.subscribe(mainView => { this.registro = { @@ -169,11 +171,11 @@ export class MapaCamasCapaComponent implements OnInit, OnDestroy { ); this.mapaCamasService.setFecha(new Date()); - this.mapaCamasService.setOrganizacion(this.auth.organizacion.id); + // this.mapaCamasService.setOrganizacion(this.auth.organizacion.id); this.mapaCamasService.select(null); this.columns = this.mapaCamasService.columnsMapa.getValue(); - this.organizacionService.usaCapasUnificadas(this.auth.organizacion.id).pipe( + this.organizacionService.usaCapasUnificadas(idOrganizacion).pipe( take(1), tap(resp => this.organizacionv2 = resp) ).subscribe(); @@ -189,6 +191,7 @@ export class MapaCamasCapaComponent implements OnInit, OnDestroy { this.fechaSelector = moment(); this.fechaInput = moment().format('DD/MM/YYYY HH:mm'); } + buscarArea(viewProtocolo) { this.laboratorioService.getProtocoloById(viewProtocolo.idProtocolo).subscribe((resultados) => { diff --git a/src/app/apps/rup/mapa-camas/views/mapa-camas-capa/mapa-camas-resumen.component.ts b/src/app/apps/rup/mapa-camas/views/mapa-camas-capa/mapa-camas-resumen.component.ts new file mode 100644 index 0000000000..0fe9aa2f83 --- /dev/null +++ b/src/app/apps/rup/mapa-camas/views/mapa-camas-capa/mapa-camas-resumen.component.ts @@ -0,0 +1,163 @@ +import { Auth } from '@andes/auth'; +import { Plex } from '@andes/plex'; +import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; +import { Component, ElementRef, OnInit, ViewChild } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import * as moment from 'moment'; +import { Observable, of } from 'rxjs'; +import { map } from 'rxjs/operators'; +import { ElementosRUPService } from 'src/app/modules/rup/services/elementosRUP.service'; +import { OrganizacionService } from 'src/app/services/organizacion.service'; +import { WebSocketService } from 'src/app/services/websocket.service'; +import { IMaquinaEstados } from '../../interfaces/IMaquinaEstados'; +import { ISnapshot } from '../../interfaces/ISnapshot'; +import { MapaCamasService } from '../../services/mapa-camas.service'; +import { PermisosMapaCamasService } from '../../services/permisos-mapa-camas.service'; +import { Location } from '@angular/common'; + +@Component({ + selector: 'app-mapa-camas-resumen', + templateUrl: 'mapa-camas-resumen.html', + styleUrls: ['./mapa-camas-capa.component.scss'] + +}) + +export class MapaCamasResumenComponent implements OnInit { + + @ViewChild(CdkVirtualScrollViewport, { static: false }) + public viewPort: CdkVirtualScrollViewport; + + @ViewChild('helpFecha', { read: ElementRef }) helpFechaRef: ElementRef; + + selectedCama$: Observable; + organizacion: string; + fecha = moment().toDate(); + camas$: Observable; + snapshot: ISnapshot[]; + itemsCensoDropdown = []; + estadoRelacion: any; + estadosCama: any; + maquinaEstados: IMaquinaEstados; + opcionesCamas = []; + accion = null; + cambiarUO; + listadoRecursos = false; + camasDisponibles; + fecha$: Observable; + organizacionv2; // true si la organizacion usa capas unificadas + estado$: Observable; + capaActual: string; + fechaBusqueda: Date; + + public sortBy: string; + public sortOrder = 'desc'; + public fechaSelector; + public fechaInput; + public isValidDate = true; + public dataOrganizacion; + + public columns = { + fechaMovimiento: false, + fechaIngreso: false, + documento: false, + sexo: false, + sector: false, + usuarioMovimiento: false, + diasEstada: false + }; + + public equipos = { + aporteOxigeno: false, + respirador: false, + monitorParamedico: false, + usaRespirador: false + }; + + public estadoCama = { + ocupada: { label: 'OCUPADA', type: 'warning' }, + bloqueada: { label: 'BLOQUEADA', type: 'default' }, + disponible: { label: 'DISPONIBLE', type: 'success' } + }; + + constructor( + public auth: Auth, + private plex: Plex, + private router: Router, + private route: ActivatedRoute, + public mapaCamasService: MapaCamasService, + public permisosMapaCamasService: PermisosMapaCamasService, + public elementoRUPService: ElementosRUPService, + public ws: WebSocketService, + public organizacionService: OrganizacionService + + ) { } + + ngOnInit() { + this.mapaCamasService.resetView(); + const ambito = this.route.snapshot.paramMap.get('ambito'); + const idOrganizacion = this.route.snapshot.paramMap.get('idOrganizacion') ? this.route.snapshot.paramMap.get('idOrganizacion') : this.auth.organizacion.id; + const capa = this.route.snapshot.paramMap.get('capa'); + this.mapaCamasService.setAmbito(ambito); + this.mapaCamasService.setOrganizacion(idOrganizacion); + this.permisosMapaCamasService.setAmbito(ambito); + this.mapaCamasService.setCapa(capa); + this.capaActual = capa; + this.fechaBusqueda = new Date(); + + + this.plex.updateTitle([{ + route: '/inicio', + name: 'Andes' + }, { + name: 'Mapa de Camas' + }, { + name: ambito + }]); + + this.mapaCamasService.setView('mapa-camas'); + this.mapaCamasService.setFecha(new Date()); + this.mapaCamasService.select(null); + + this.columns = this.mapaCamasService.columnsMapa.getValue(); + this.estado$ = this.mapaCamasService.maquinaDeEstado$.pipe( + map(estado => estado) + ); + + this.organizacionService.getById(idOrganizacion).subscribe(organizacion => { + this.dataOrganizacion = organizacion; + }); + + this.getSnapshot(); + + } + + getSnapshot(fecha = null) { + if (!fecha) { + fecha = this.fecha; + } + this.camas$ = this.mapaCamasService.snapshotOrdenado$.pipe( + map(snapshots => { + return snapshots.filter(snap => snap.estado !== 'inactiva' && snap.esCensable); + }) + ); + } + + sortTable(event: string) { + if (this.sortBy === event) { + this.sortOrder = (this.sortOrder === 'asc') ? 'desc' : 'asc'; + this.mapaCamasService.sortOrder.next(this.sortOrder); + } else { + this.sortBy = event; + this.mapaCamasService.sortBy.next(event); + this.mapaCamasService.sortOrder.next('desc'); + } + } + + volver() { + this.router.navigate([ + 'com', + 'estados-cama-provincial' + ]); + } + +} diff --git a/src/app/apps/rup/mapa-camas/views/mapa-camas-capa/mapa-camas-resumen.html b/src/app/apps/rup/mapa-camas/views/mapa-camas-capa/mapa-camas-resumen.html new file mode 100644 index 0000000000..739e16b9f4 --- /dev/null +++ b/src/app/apps/rup/mapa-camas/views/mapa-camas-capa/mapa-camas-resumen.html @@ -0,0 +1,113 @@ + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ CAMA + + + + + + SECTOR + + + + + + PACIENTE + + + + + + UNIDAD ORGANIZATIVA + + + + + + FECHA INGRESO + + + + + + ESTADO + + + + +
+ + + {{cama.nombre}} + + + + + {{ cama.sectorName }} + + + + Sin paciente + + + + {{cama.paciente | nombre}}
+ {{cama.paciente | documento}} +
+ +
+ + {{cama.unidadOrganizativa.term}} + + + + + {{ cama.fechaIngreso | fecha }} + {{ cama.fechaIngreso | hora }} hs + + + + {{cama.estado | uppercase}} + +
+
+
+ +
\ No newline at end of file diff --git a/src/app/modules/com/components/estados-cama-provincial.html b/src/app/modules/com/components/estados-cama-provincial.html index 9c950ec8e2..59749f8ad0 100644 --- a/src/app/modules/com/components/estados-cama-provincial.html +++ b/src/app/modules/com/components/estados-cama-provincial.html @@ -68,13 +68,15 @@ + Ver Mapa +    
{{efectorSelected.organizacion.nombre}}
- +
diff --git a/src/app/modules/com/components/estados-cama-provincial.ts b/src/app/modules/com/components/estados-cama-provincial.ts index e17a8beb78..7db0cc04dd 100644 --- a/src/app/modules/com/components/estados-cama-provincial.ts +++ b/src/app/modules/com/components/estados-cama-provincial.ts @@ -4,6 +4,7 @@ import { map, Observable } from 'rxjs'; import { IOrganizacion } from '../../../interfaces/IOrganizacion'; import { OrganizacionService } from '../../../services/organizacion.service'; import { EstadosCamaProvincialService } from './../services/estados-cama-provincial.service'; +import { Router } from '@angular/router'; @Component({ selector: 'estados-cama-provincial', @@ -14,7 +15,8 @@ import { EstadosCamaProvincialService } from './../services/estados-cama-provinc export class EstadosCamaProvincialComponent implements OnInit { constructor( - private estadosCamaProvincialService: EstadosCamaProvincialService + private estadosCamaProvincialService: EstadosCamaProvincialService, + private router: Router ) { } public camasEstados$: Observable; @@ -80,5 +82,17 @@ export class EstadosCamaProvincialComponent implements OnInit { }); } + + + goTo(efectorSelected, capaSeleccionada) { + this.router.navigate([ + 'mapa-camas', + 'internacion', + 'resumen', + capaSeleccionada.id, + efectorSelected.organizacion._id + ]); + } + }