Skip to content

Commit

Permalink
feat(citas): evita nueva consulta al cambiar de tab
Browse files Browse the repository at this point in the history
  • Loading branch information
liquid36 committed Oct 7, 2020
1 parent 51b7e4e commit 9fde0f9
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 73 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
import { Component, Input, OnInit, EventEmitter, Output } from '@angular/core';
import { Component, Input, OnInit, EventEmitter, Output, OnChanges, SimpleChange } from '@angular/core';
import * as moment from 'moment';
import { IPaciente } from '../../../core/mpi/interfaces/IPaciente';
import { TurnoService } from '../../../services/turnos/turno.service';
import { Auth } from '@andes/auth';
import { LogPacienteService } from '../../../services/logPaciente.service';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { cache } from '@andes/shared';


@Component({
Expand All @@ -14,28 +17,14 @@ import { LogPacienteService } from '../../../services/logPaciente.service';

export class EstadisticasPacientesComponent implements OnInit {
pacienteFields = ['sexo', 'fechaNacimiento', 'financiador', 'numeroAfiliado', 'direccion', 'telefono'];
nroCarpeta: any;
_paciente: IPaciente;
turnosPaciente: any;
ultimosTurnos: any;
pacienteSeleccionado: IPaciente;
fechaDesde: any;
fechaHasta: any;
turnosOtorgados = 0;
inasistencias = 0;
idOrganizacion = this.auth.organizacion.id;
carpetaEfector: any;
currentTab = 0;
@Input() showTab: Number = 0;
@Input('paciente')
set paciente(value: any) {
this.pacienteSeleccionado = value;
this._paciente = value;
}
get paciente(): any {
return this._paciente;
}

historial$: Observable<any[]>;
turnosPaciente$: Observable<any[]>;
ultimosTurnos$: Observable<any[]>;


@Input() showTab: Number = 0;
@Input() paciente: IPaciente;
@Output() showArancelamientoForm = new EventEmitter<any>();

// Inicialización
Expand All @@ -46,55 +35,31 @@ export class EstadisticasPacientesComponent implements OnInit {
) { }

ngOnInit() {
this.carpetaEfector = {
organizacion: {
id: this.auth.organizacion.id,
nombre: this.auth.organizacion.nombre
},
nroCarpeta: ''
};
this.refresh();
}

arancelamiento(turno) {
this.showArancelamientoForm.emit(turno);
refresh() {
this.historial$ = this.serviceTurno.getHistorial({ pacienteId: this.paciente.id }).pipe(
map(turnos => this.sortByHoraInicio(turnos)),
cache()
);
this.turnosPaciente$ = this.historial$.pipe(
map(turnos => turnos.filter(t => moment(t.horaInicio).isSameOrAfter(new Date(), 'day') && t.estado !== 'liberado'))
);
this.ultimosTurnos$ = this.historial$.pipe(
map(turnos => turnos.filter(t => moment(t.horaInicio).isSameOrBefore(new Date(), 'day')))
);
}

updateHistorial() {
if (this._paciente && this._paciente.id) {
let cantInasistencias = 0;
// Se muestra la cantidad de turnos otorgados e inasistencias
this.serviceTurno.getHistorial({ pacienteId: this._paciente.id }).subscribe(turnos => {
turnos.forEach(turno => {
if (turno.asistencia && turno.asistencia === 'noAsistio') {
cantInasistencias++;
}
});
this.turnosOtorgados = turnos.length;
this.inasistencias = cantInasistencias;
this.sortTurnos(turnos);
this.turnosPaciente = turnos.filter(t => moment(t.horaInicio).isSameOrAfter(new Date(), 'day') && t.estado !== 'liberado');
this.ultimosTurnos = turnos.filter(t => moment(t.horaInicio).isSameOrBefore(new Date(), 'day'));
});
}
arancelamiento(turno) {
this.showArancelamientoForm.emit(turno);
}

private sortTurnos(turnos) {
turnos = turnos.sort((a, b) => {
let inia = a.horaInicio ? new Date(a.horaInicio) : null;
let inib = b.horaInicio ? new Date(b.horaInicio) : null;
{
return ((inia && inib) ? (inib.getTime() - inia.getTime()) : 0);
}
private sortByHoraInicio(turnos: any[]) {
return turnos.sort((a, b) => {
const inia = a.horaInicio ? new Date(a.horaInicio) : null;
const inib = b.horaInicio ? new Date(b.horaInicio) : null;
return ((inia && inib) ? (inib.getTime() - inia.getTime()) : 0);
});
}

changeTab(event) {
this.currentTab = event;
if (this._paciente && this._paciente.id) {
if (event === 1 || event === 2) {
this.updateHistorial();
}
}
}

}
17 changes: 9 additions & 8 deletions src/app/components/turnos/dashboard/estadisticas-pacientes.html
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
<plex-tabs (change)="changeTab($event)" size="full" [activeIndex]="showTab">
<plex-tabs size="full" [activeIndex]="showTab">
<plex-tab icon="information" label="Datos">
<!--Header de estadisticas-->
<ng-container *ngIf="paciente && _paciente">
<paciente-detalle [paciente]="_paciente" orientacion="horizontal" [fields]="pacienteFields">
<ng-container *ngIf="paciente">
<paciente-detalle [paciente]="paciente" orientacion="horizontal" [fields]="pacienteFields">
</paciente-detalle>
<br>
<update-contacto-direccion [pac]="paciente"></update-contacto-direccion>
</ng-container>

</plex-tab>
<plex-tab icon="clock" label="Turnos">
<turnos-paciente [turnos]="turnosPaciente" [operacion]="'operacionTurnos'" [paciente]='pacienteSeleccionado'
(turnosPacienteChanged)="updateHistorial()" (showArancelamientoForm)="arancelamiento($event)">
<turnos-paciente [turnos]="turnosPaciente$ | async" [operacion]="'operacionTurnos'" [paciente]='paciente'
(turnosPacienteChanged)="refresh()" (showArancelamientoForm)="arancelamiento($event)" *plTab>
</turnos-paciente>
</plex-tab>
<plex-tab icon="history" label="Historial">
<fieldset>
<fieldset *plTab>
<ul class="list-group">
<li *ngFor="let turno of ultimosTurnos let i=index" class="list-group-item" [appHover]="'active'">
<li *ngFor="let turno of ultimosTurnos$ | async; let i=index" class="list-group-item"
[appHover]="'active'">
<div class="list-group-item-text">
<div>
<plex-badge *ngIf="turno.estado === 'asignado' || turno.estado === 'turnoDoble'"
Expand Down Expand Up @@ -47,6 +48,6 @@
</fieldset>
</plex-tab>
<plex-tab icon="folder-account" label="Carpetas">
<carpeta-paciente *ngIf="currentTab === 3" [pacienteSeleccionado]='pacienteSeleccionado'> </carpeta-paciente>
<carpeta-paciente *plTab [pacienteSeleccionado]="paciente"> </carpeta-paciente>
</plex-tab>
</plex-tabs>

0 comments on commit 9fde0f9

Please sign in to comment.