Skip to content

Commit

Permalink
ref(in): muestra unidad organizativa en listado y agrega filtros
Browse files Browse the repository at this point in the history
  • Loading branch information
negro89 committed May 19, 2021
1 parent f8ffef2 commit 11bca1f
Show file tree
Hide file tree
Showing 8 changed files with 64 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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<ISnapshot>;

Expand Down Expand Up @@ -40,9 +39,6 @@ export class CambiarCamaComponent implements OnInit, OnDestroy {
private mapaCamasService: MapaCamasService,
) { }

ngOnDestroy() {
}

ngOnInit() {
combineLatest([
this.mapaCamasService.maquinaDeEstado$,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -480,6 +480,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.ejecucion.unidadOrganizativa = this.cama.unidadOrganizativa;
nuevaPrestacion.paciente['_id'] = this.paciente.id;

this.servicioPrestacion.post(nuevaPrestacion).subscribe(prestacion => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,15 @@
<plex-datetime type="date" [(ngModel)]="filtros.fechaEgresoHasta" name='fechaEgresoHasta' label="Egreso hasta"
(change)="filtrarFecha()" [min]="filtros.fechaEgresoDesde" [debounce]="600">
</plex-datetime>
<plex-select [(ngModel)]="filtros.estado" [data]='estadosInternacion' label="Estado" (change)="filtrar()">
</plex-select>
<plex-button *ngIf="permisosMapaCamasService.descargarListado" type="warning" icon="download mdi-14px" title="Descargar Csv"
titlePosition="top" (click)="reporteInternaciones()" [disabled]="requestInProgress">
<div collapse>
<plex-select name="unidadOrganizativa" label="Unidad Organizativa" [(ngModel)]="filtros.unidadOrganizativa"
idField="conceptId" labelField="term" (change)="filtrar()" [data]="unidadesOrganizativas$ | async">
</plex-select>
<plex-select [(ngModel)]="filtros.estado" [data]='estadosInternacion' label="Estado" (change)="filtrar()">
</plex-select>
</div>
<plex-button *ngIf="permisosMapaCamasService.descargarListado" type="warning" icon="download mdi-14px"
title="Descargar Csv" titlePosition="top" (click)="reporteInternaciones()"
[disabled]="requestInProgress">
</plex-button>
</plex-wrapper>
</plex-wrapper>
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ 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 { Observable } from 'rxjs/internal/Observable';
import { MapaCamasHTTP } from '../../../services/mapa-camas.http';
import { map } from 'rxjs/operators';

@Component({
selector: 'app-filtros-internacion',
Expand All @@ -19,25 +22,35 @@ export class FiltrosInternacionComponent implements OnInit {
};
estadosInternacion;
requestInProgress: boolean;
unidadesOrganizativas$: Observable<any[]>;

constructor(
private auth: Auth,
private listadoInternacionService: ListadoInternacionService,
private servicioDocumentos: DocumentosService,
public permisosMapaCamasService: PermisosMapaCamasService,
private camasHttp: MapaCamasHTTP
) { }

ngOnInit() {
this.estadosInternacion = enumerados.getObjEstadoInternacion();
this.unidadesOrganizativas$ = this.camasHttp.snapshot('internacion', 'estadistica', new Date()).pipe(
map(camas => {
let unidades = [];
camas.forEach(cama => {
if (!unidades.some(u => u.id === cama.unidadOrganizativa.id)) {
unidades.push(cama.unidadOrganizativa);
}
});
return unidades;
})
);
}

filtrar() {
this.listadoInternacionService.pacienteText.next(this.filtros.paciente);
if (this.filtros.estado) {
this.listadoInternacionService.estado.next(this.filtros.estado.id);
} else {
this.listadoInternacionService.estado.next(null);
}
this.listadoInternacionService.estado.next(this.filtros.estado?.id);
this.listadoInternacionService.unidadOrganizativa.next(this.filtros.unidadOrganizativa);
}

filtrarFecha() {
Expand All @@ -57,8 +70,6 @@ export class FiltrosInternacionComponent implements OnInit {
const params = {
desde: moment(this.filtros.fechaIngresoDesde).startOf('d').format(),
hasta: moment(this.filtros.fechaIngresoHasta).endOf('d').format(),
// egresoDesde: moment(this.filtros.fechaEgresoDesde).startOf('d').format(),
// egresoHasta: moment(this.filtros.fechaEgresoHasta).endOf('d').format(),
organizacion: this.auth.organizacion.id
};
this.requestInProgress = true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,12 @@
<th rowspan="2">Dni</th>
<th rowspan="2">Fecha de ingreso</th>
<th rowspan="2">Fecha de egreso</th>
<th rowspan="2">Unidad Organizativa</th>
<th rowspan="2">Estado</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let internacion of listaInternacion$ | async"
<tr *ngFor="let internacion of listaInternacion"
[class.bg-inverse]="selectedPrestacion._id === internacion._id"
[class.text-white]="selectedPrestacion._id === internacion._id"
(click)="seleccionarPrestacion(internacion, selectedPrestacion)">
Expand All @@ -43,6 +44,9 @@
{{devuelveFecha(internacion,"egreso") | fecha}}
{{devuelveFecha(internacion,"egreso") | hora}}</span>
</td>
<td>
{{ internacion.ejecucion.unidadOrganizativa?.term }}
</td>
<td>
<span> {{internacion.estados[internacion.estados.length - 1].tipo}}</span>
</td>
Expand Down Expand Up @@ -70,7 +74,7 @@
<plex-button title="volver" icon="arrow-left" type="danger" size="sm" (click)="volverADetalle()">
</plex-button>
</app-desocupar-cama>
<app-cambiar-cama *ngIf="mostrar === 'cambiarCama'" cambiarUO="{{ cambiarUO }}"
<app-cambiar-cama *ngIf="mostrar === 'cambiarCama'" cambiarUO="{{ cambiarUO }}" (onSave)="refresh()"
(cancel)="volverADetalle()">
</app-cambiar-cama>
</plex-layout-sidebar>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,16 @@ import { PermisosMapaCamasService } from '../../services/permisos-mapa-camas.ser
})

export class InternacionListadoComponent implements OnInit {
listaInternacion$: Observable<IPrestacion[]>;
selectedPrestacion$: Observable<IPrestacion>;
fechaIngresoHasta$ = this.listadoInternacionService.fechaIngresoHasta;

// VARIABLES
public mostrar = 'datosInternacion';
public listaInternacion;
public listaInternacionAux;
public cambiarUO = false;
public puedeValidar = false;
public puedeRomper = false;
public listaInternacion: IPrestacion[] = [];

constructor(
private plex: Plex,
Expand Down Expand Up @@ -63,7 +62,9 @@ export class InternacionListadoComponent implements OnInit {
return prestacion;
})
);
this.listaInternacion$ = this.listadoInternacionService.listaInternacionFiltrada$;
this.listadoInternacionService.listaInternacionFiltrada$.pipe(
map(lista => this.listaInternacion = lista)
).subscribe();
}

devuelveFecha(internacion, tipo) {
Expand Down Expand Up @@ -117,6 +118,13 @@ export class InternacionListadoComponent implements OnInit {
this.mostrar = 'desocuparCama';
}

refresh() {
this.listadoInternacionService.listaInternacionFiltrada$.subscribe(lista => {
this.listaInternacion = lista;
this.volverADetalle();
});
}

volverADetalle() {
this.mostrar = 'datosInternacion';
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
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';

Expand All @@ -16,11 +15,11 @@ export class ListadoInternacionService {
public fechaIngresoHasta = new BehaviorSubject<Date>(moment().toDate());
public fechaEgresoDesde = new BehaviorSubject<Date>(null);
public fechaEgresoHasta = new BehaviorSubject<Date>(null);
public unidadOrganizativa = new BehaviorSubject<any>(null);

public estado = new BehaviorSubject<any>(null);

constructor(
private auth: Auth,
private mapaHTTP: MapaCamasHTTP,
) {
this.listaInternacion$ = combineLatest(
Expand All @@ -45,16 +44,16 @@ export class ListadoInternacionService {
this.listaInternacionFiltrada$ = combineLatest(
this.listaInternacion$,
this.pacienteText,
this.estado
this.estado,
this.unidadOrganizativa
).pipe(
map(([listaInternacion, paciente, estado]) =>
this.filtrarListaInternacion(listaInternacion, paciente, estado)
map(([listaInternacion, paciente, estado, unidad]) =>
this.filtrarListaInternacion(listaInternacion, paciente, estado, unidad)
)
);

}

filtrarListaInternacion(listaInternacion: IPrestacion[], paciente: string, estado: string) {
filtrarListaInternacion(listaInternacion: IPrestacion[], paciente: string, estado: string, unidad: any) {
let listaInternacionFiltrada = listaInternacion;

if (paciente) {
Expand All @@ -63,18 +62,21 @@ export class ListadoInternacionService {
listaInternacionFiltrada = listaInternacionFiltrada.filter((internacion: IPrestacion) => internacion.paciente.documento.includes(paciente));
} else {
listaInternacionFiltrada = listaInternacionFiltrada.filter((internacion: IPrestacion) =>
(internacion.paciente.nombre.toLowerCase().includes(paciente.toLowerCase()) ||
internacion.paciente.apellido.toLowerCase().includes(paciente.toLowerCase()))
(internacion.paciente.nombre.toLowerCase().includes(paciente.toLowerCase()) ||
internacion.paciente.apellido.toLowerCase().includes(paciente.toLowerCase()))
);
}
}

if (estado) {
listaInternacionFiltrada = listaInternacionFiltrada.filter((internacion: IPrestacion) =>
internacion.estados[internacion.estados.length - 1].tipo === estado
);
}

if (unidad) {
listaInternacionFiltrada = listaInternacionFiltrada.filter((internacion: IPrestacion) =>
internacion.ejecucion.unidadOrganizativa?.id === unidad.id
);
}
return listaInternacionFiltrada;
}

Expand Down
1 change: 1 addition & 0 deletions src/app/modules/rup/interfaces/prestacion.interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ export class IPrestacion {
id: string,
nombre: string
},
unidadOrganizativa: ISnomedConcept,
// Registros de la ejecución
registros: IPrestacionRegistro[],
};
Expand Down

0 comments on commit 11bca1f

Please sign in to comment.