Skip to content

Commit

Permalink
feat(mapa-camas): guarda unidad organizativa en prestacion (#2283)
Browse files Browse the repository at this point in the history
* ref(in): muestra unidad organizativa en listado y agrega filtros

* ref(in): correcciones

se agregan ademas controles para errores lanzados por consola
  • Loading branch information
negro89 authored Jun 3, 2021
1 parent a431896 commit ea930c6
Show file tree
Hide file tree
Showing 11 changed files with 55 additions and 25 deletions.
4 changes: 2 additions & 2 deletions src/app/apps/rup/mapa-camas/services/mapa-camas.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { Observable, BehaviorSubject, combineLatest, of, timer } from 'rxjs';
import { ISnapshot } from '../interfaces/ISnapshot';
import { IMaquinaEstados, IMAQRelacion, IMAQEstado } from '../interfaces/IMaquinaEstados';
import { MapaCamasHTTP } from './mapa-camas.http';
import { switchMap, map, pluck, catchError, startWith, multicast, filter, tap } from 'rxjs/operators';
import { switchMap, map, pluck, catchError, startWith, multicast, filter } from 'rxjs/operators';
import { ISectores } from '../../../../interfaces/IOrganizacion';
import { ISnomedConcept } from '../../../../modules/rup/interfaces/snomed-concept.interface';
import { IPrestacion } from '../../../../modules/rup/interfaces/prestacion.interface';
Expand Down Expand Up @@ -262,7 +262,7 @@ export class MapaCamasService {
private getCamasDisponiblesCama(camas: ISnapshot[], cama: ISnapshot) {
let camasMismaUO = [];
let camasDistintaUO = [];
if (cama.id) {
if (cama?.id) {
camas.map(c => {
if (c.sala || c.estado === 'disponible') {
if (c.id !== cama.id) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<ng-container *ngIf="mostrar === 'movimientos'">
<app-movimientos-internacion>
<plex-button *ngIf="((view$ | async) === 'listado-internacion' && permisosMapaCamasService.movimientos)"
[disabled]="(prestacion$ | async).ejecucion.registros[1]" label="Cambiar cama"
[disabled]="(prestacion$ | async).ejecucion?.registros[1]" label="Cambiar cama"
type="warning" size="sm" (click)="changeCama()">
</plex-button>
</app-movimientos-internacion>
Expand Down
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 @@ -73,7 +73,7 @@ export class CamaDesocuparComponent implements OnInit, OnDestroy {
return of(fechaMasUnMinuto);
} else {
return this.camaSelectedSegunView$.pipe(
map(cama => moment(cama.fecha).add(1, 'm'))
map(cama => moment(cama?.fecha).add(1, 'm'))
);
}
}),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -524,6 +524,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.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 @@ -18,6 +18,9 @@
<plex-select name="obraSocial" label="Obra Social" [(ngModel)]="filtros.obraSocial" (change)="filtrar()"
[data]="obraSociales$ | async" idField="_id">
</plex-select>
<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>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ 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 { ObraSocialService } from 'src/app/services/obraSocial.service';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { arrayToSet } from '@andes/shared';
Expand All @@ -23,6 +22,7 @@ export class FiltrosInternacionComponent implements OnInit {
};
estadosInternacion;
requestInProgress: boolean;
unidadesOrganizativas$: Observable<any[]>;

obraSociales$: Observable<any[]>;

Expand All @@ -46,12 +46,25 @@ export class FiltrosInternacionComponent implements OnInit {
return rs;
})
);

this.unidadesOrganizativas$ = this.listadoInternacionService.listaInternacion$.pipe(
map(listado => {
let unidades = [];
listado.forEach(int => {
if (int.unidadOrganizativa && !unidades.some(u => u?.term === int.unidadOrganizativa.term)) {
unidades.push(int.unidadOrganizativa);
}
});
return unidades;
})
);
}

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

filtrarFecha() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
<th rowspan="2">Fecha de ingreso</th>
<th rowspan="2">Fecha de egreso</th>
<th rowspan="2" class="w-25">Obra Social</th>
<th rowspan="2">Unidad Organizativa</th>
<th rowspan="2">Estado</th>
</tr>
</thead>
Expand Down Expand Up @@ -47,6 +48,9 @@
<td>
{{ internacion.paciente.obraSocial?.nombre }}
</td>
<td>
{{ internacion.unidadOrganizativa?.term }}
</td>
<td>
<span> {{internacion.estados[internacion.estados.length - 1].tipo}}</span>
</td>
Expand Down Expand Up @@ -76,7 +80,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 @@ -22,8 +22,6 @@ export class InternacionListadoComponent implements OnInit {

// VARIABLES
public mostrar = 'datosInternacion';
public listaInternacion;
public listaInternacionAux;
public cambiarUO = false;
public puedeValidar = false;
public puedeRomper = false;
Expand Down Expand Up @@ -122,6 +120,11 @@ export class InternacionListadoComponent implements OnInit {
this.mostrar = 'desocuparCama';
}

refresh() {
this.listadoInternacionService.refresh.next(true);
this.volverADetalle();
}

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

@Injectable()
export class ListadoInternacionService {
Expand All @@ -16,21 +16,23 @@ 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);
public obraSocial = new BehaviorSubject<any[]>(null);
public refresh = new BehaviorSubject<any>(null);

constructor(
private auth: Auth,
private mapaHTTP: MapaCamasHTTP,
) {
this.listaInternacion$ = combineLatest(
this.fechaIngresoDesde,
this.fechaIngresoHasta,
this.fechaEgresoDesde,
this.fechaEgresoHasta,
this.refresh
).pipe(
auditTime(1),
switchMap(([fechaIngresoDesde, fechaIngresoHasta, fechaEgresoDesde, fechaEgresoHasta]) => {
switchMap(([fechaIngresoDesde, fechaIngresoHasta, fechaEgresoDesde, fechaEgresoHasta, refresh]) => {
if (fechaIngresoDesde && fechaIngresoHasta) {
const filtros = {
fechaIngresoDesde, fechaIngresoHasta,
Expand All @@ -39,22 +41,24 @@ export class ListadoInternacionService {

return this.mapaHTTP.getPrestacionesInternacion(filtros);
}
})
}),
cache()
);

this.listaInternacionFiltrada$ = combineLatest(
this.listaInternacion$,
this.pacienteText,
this.estado,
this.obraSocial
this.obraSocial,
this.unidadOrganizativa
).pipe(
map(([listaInternacion, paciente, estado, obraSocial]) =>
this.filtrarListaInternacion(listaInternacion, paciente, estado, obraSocial)
map(([listaInternacion, paciente, estado, obraSocial, unidad]) =>
this.filtrarListaInternacion(listaInternacion, paciente, estado, obraSocial, unidad)
)
);
}

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

if (paciente) {
Expand Down Expand Up @@ -83,6 +87,13 @@ export class ListadoInternacionService {
}
);
}

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

return listaInternacionFiltrada;
}

Expand Down
3 changes: 1 addition & 2 deletions src/app/modules/rup/interfaces/prestacion.interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import { IObraSocial } from '../../../interfaces/IObraSocial';
export class IPrestacion {
id: string;
trackId: string;
unidadOrganizativa: ISnomedConcept;
elementoRUP: string;
// Datos principales del paciente
paciente: {
Expand Down Expand Up @@ -70,7 +69,7 @@ export class IPrestacion {
// Historia de estado de la prestación
estados: IPrestacionEstado[];
estadoActual: IPrestacionEstado;

unidadOrganizativa: ISnomedConcept;
createdAt: Date;
updatedAt: Date;

Expand Down

0 comments on commit ea930c6

Please sign in to comment.