Skip to content

Commit

Permalink
fix(IN): visualizacion de registros en sidebar (#2973)
Browse files Browse the repository at this point in the history
  • Loading branch information
negro89 authored and aldoEMatamala committed Feb 6, 2024
1 parent 9d3caf0 commit 97cd467
Show file tree
Hide file tree
Showing 8 changed files with 58 additions and 84 deletions.
6 changes: 3 additions & 3 deletions angular.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
],
"buildOptimizer": false,
"sourceMap": true,
"optimization": true,
"optimization": false,
"aot": true
},
"test": {
Expand All @@ -71,9 +71,9 @@
]
},
"production": {
"optimization": true,
"optimization": false,
"outputHashing": "all",
"sourceMap": false,
"sourceMap": true,
"extractCss": true,
"namedChunks": false,
"aot": true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@

<form #formulario="ngForm">
<plex-grid type="full" cols="2" class="mt-0">
<plex-datetime label="Desde" name="desde" type="date" [(ngModel)]="desde" [min]="min$ | async" [debounce]="600"
(change)="onChangeFecha()">
<plex-datetime label="Desde" name="desde" type="date" [(ngModel)]="desde" [min]="min" [max]="hasta"
[debounce]="600" (change)="onChangeFecha()">
</plex-datetime>
<plex-datetime label="Hasta" name="haste" type="date" [(ngModel)]="hasta" [max]="max$ | async" [debounce]="600"
(change)="onChangeFecha()">
<plex-datetime label="Hasta" name="haste" type="date" [(ngModel)]="hasta" [min]="desde" [max]="max"
[debounce]="600" (change)="onChangeFecha()">
</plex-datetime>
<plex-select label="Prestación" name="tipoPrestacion" [(ngModel)]="tipoPrestacion" idField="conceptId"
labelField="term" [data]="prestacionesList$ | async" (change)="onChangeTipoPrestacion()" span="2">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { Component, EventEmitter, OnInit, Output, ViewChild } from '@angular/cor
import { NgForm } from '@angular/forms';
import { Router } from '@angular/router';
import { BehaviorSubject, Observable, combineLatest } from 'rxjs';
import { catchError, concatMap, map, pluck, switchMap, tap } from 'rxjs/operators';
import { catchError, concatMap, map, switchMap } from 'rxjs/operators';
import { HUDSService } from 'src/app/modules/rup/services/huds.service';
import { IPaciente } from '../../../../../core/mpi/interfaces/IPaciente';
import { ModalMotivoAccesoHudsService } from '../../../../../modules/rup/components/huds/modal-motivo-acceso-huds.service';
Expand All @@ -23,14 +23,14 @@ export class RegistrosHudsDetalleComponent implements OnInit {

public historial$: Observable<any>;
public historialFiltrado$: Observable<any>;
private historialInternacion$: Observable<any>;

public desde: Date;
public hasta: Date;
public tipoPrestacion;
public inProgress = true;
public prestacionesEliminadas = [];
idOrganizacion = this.auth.organizacion.id;
public idOrganizacion = this.auth.organizacion.id;
private admisionHospitalariaConceptId = '32485007';

public refreshFecha$ = new BehaviorSubject(null);
public tipoPrestacion$ = new BehaviorSubject(null);
Expand All @@ -40,8 +40,8 @@ export class RegistrosHudsDetalleComponent implements OnInit {
public estadoCama$: Observable<IMAQEstado>;
public accionesEstado$: Observable<any>;
public prestacionesList$: Observable<any>;
public min$: Observable<Date>;
public max$: Observable<Date>;
public min: Date;
public max: Date;
public paciente;

@Output() accion = new EventEmitter();
Expand All @@ -59,28 +59,37 @@ export class RegistrosHudsDetalleComponent implements OnInit {
) { }

ngOnInit() {
this.desde = moment(this.mapaCamasService.fecha).subtract(7, 'd').toDate();
this.hasta = moment(this.mapaCamasService.fecha).toDate();

this.historialInternacion$ = this.mapaCamasService.historialInternacion$.pipe(cache());

this.puedeVerHuds = this.auth.check('huds:visualizacionHuds');
let estaPrestacionId; // id de prestacion correspondiente a la internacion actual
this.historial$ = combineLatest([
this.cama$,
this.mapaCamasService.historialInternacion$,
this.mapaCamasService.selectedPrestacion,
this.mapaCamasService.resumenInternacion$,
]).pipe(
switchMap(([cama, prestacion, resumen]) => {
if (resumen) {
switchMap(([cama, movimientos, prestacion, resumen]) => {
if (prestacion?.id) { // listado
this.desde = prestacion.ejecucion.fecha;
this.hasta = prestacion.ejecucion.registros[1]?.valor.InformeEgreso.fechaEgreso || new Date();
} else if (resumen?.id) { // listado
this.desde = resumen.fechaIngreso;
this.hasta = resumen.fechaEgreso || moment().toDate();
this.hasta = resumen.fechaEgreso || new Date();
} else { // mapa de camas
this.desde = movimientos.find(m => m.extras && m.extras.ingreso).fecha;
this.hasta = movimientos.find(m => m.extras && m.extras.egreso)?.fecha || new Date();
}
estaPrestacionId = prestacion?.id ? prestacion.id : this.mapaCamasService.capa === 'estadistica' ? cama.idInternacion : resumen.idPrestacion;
const paciente = cama?.paciente || (prestacion?.paciente || resumen?.paciente);
this.paciente = paciente;
if (paciente) {
return this.motivoAccesoService.getAccessoHUDS(paciente as IPaciente);
this.min = moment(this.desde).startOf('day').toDate();
this.max = moment(this.hasta).endOf('day').toDate();

if (this.mapaCamasService.capa === 'estadistica') {
estaPrestacionId = cama.idInternacion || prestacion.id;
} else {
estaPrestacionId = cama.idInternacion || resumen.id;
}
this.paciente = cama.paciente || prestacion.paciente || resumen.paciente;

if (this.paciente) {
return this.motivoAccesoService.getAccessoHUDS(this.paciente as IPaciente);
}
return [];
}),
Expand All @@ -98,77 +107,41 @@ export class RegistrosHudsDetalleComponent implements OnInit {
cache()
);

this.min$ = this.historialInternacion$.pipe(
map(movimientos => {
if (movimientos.length > 0) {
const lastIndex = movimientos.length - 1;
return moment(movimientos[lastIndex].fecha).startOf('day').toDate();
}
return new Date();
}),
tap((date) => {
if (moment(this.desde).isSameOrBefore(moment(date))) {
this.desde = date;
this.onChangeFecha();
}
})
);

this.max$ = this.historialInternacion$.pipe(
map(movimientos => {
const egreso = movimientos.find(m => m.extras && m.extras.egreso);
if (egreso) {
this.hasta = egreso.fecha;
this.onChangeFecha();
return egreso.fecha;
}
return null;
})
);

this.historialFiltrado$ = combineLatest([
this.historial$,
this.refreshFecha$,
this.tipoPrestacion$,
this.min$,
this.id$
]).pipe(
map(([prestaciones, refreshFecha, tipoPrestacion, min, idPrestacion]) => {
map(([prestaciones, refreshFecha, tipoPrestacion, idPrestacion]) => {
if (idPrestacion) {

this.prestacionesEliminadas.push(idPrestacion);
}
if (!this.desde) {
this.desde = moment().subtract(7, 'd').toDate();
}
if (this.desde instanceof Date) {
this.desde = this.desde.getTime() < min.getTime() ? moment(min).toDate() : this.desde;
} else if (moment.isMoment(this.desde)) {
this.desde = moment(this.desde).toDate().getTime() < min.getTime() ? moment(min).toDate() : this.desde;
}
this.inProgress = false;
return prestaciones.filter((registro) => {
const fecha = moment(registro.ejecucion?.fecha || registro.fecha);
const conceptId = registro.solicitud?.tipoPrestacion.conceptId || registro.prestacion.snomed.conceptId;
const tipoPrestacionValida = !tipoPrestacion || tipoPrestacion.conceptId === conceptId;
const noEsInternacion = conceptId !== this.admisionHospitalariaConceptId;
const fechaValida = fecha.isSameOrBefore(this.hasta, 'd') && fecha.isSameOrAfter(this.desde, 'd');
const organizacion = registro.solicitud?.organizacion || registro.prestacion.organizacion;

if (this.mapaCamasService.capa === 'estadistica') {
const organizacionValida = organizacion?.id === this.idOrganizacion;
return fechaValida && tipoPrestacionValida && organizacionValida && !this.prestacionesEliminadas.some(id => id === registro.id);
return fechaValida && noEsInternacion && tipoPrestacionValida && organizacionValida && !this.prestacionesEliminadas.some(id => id === registro.id);
} else {
return fechaValida && tipoPrestacionValida && !this.prestacionesEliminadas.some(id => id === registro.id);
return fechaValida && noEsInternacion && tipoPrestacionValida && !this.prestacionesEliminadas.some(id => id === registro.id);
}
});
})
}),
cache()
);

this.estadoCama$ = this.cama$.pipe(switchMap(cama => this.mapaCamasService.getEstadoCama(cama)));
this.accionesEstado$ = this.estadoCama$.pipe(
notNull(),
pluck('acciones'),
map(acciones => acciones.filter(acc => acc.tipo === 'nuevo-registro'))
map(estado => estado.acciones.filter(acc => acc.tipo === 'nuevo-registro'))
);

this.prestacionesList$ = this.historial$.pipe(
Expand Down
6 changes: 3 additions & 3 deletions src/app/components/top/pipes/botones.pipe.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,10 @@ export class BotonesSolicitudPipe implements PipeTransform {
botones.anular = true;
}
}
// Si el usuario tiene permisos para rup e inicio el registro de atencion medica o tiene permisos especiales podra continuar con la prestacion
// Si el usuario tiene permisos para rup e inicio el registro de atencion medica o tiene permisos especiales podra continuar con la prestacion en ejecución
if (this.auth.getPermissions('rup:?').length) {
botones.continuarRegistro = ((prestacion.estadoActual.tipo === 'ejecucion') &&
(prestacion.estadoActual.createdBy.username === this.auth.usuario.username)) || (this.auth.check(`rup:validacion:${prestacion.solicitud.tipoPrestacion.id}`));
botones.continuarRegistro = prestacion.estadoActual.tipo === 'ejecucion' &&
(prestacion.estadoActual.createdBy.username === this.auth.usuario.username || this.auth.check(`rup:validacion:${prestacion.solicitud.tipoPrestacion.id}`));
}
return botones;
}
Expand Down
2 changes: 1 addition & 1 deletion src/app/components/top/pipes/estado-prestacion.pipe.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ export class EstadoPrestacionPipe implements PipeTransform {
'vencida': 'danger'
};

return prestacion.solicitud.turno ? 'success' : badge[prestacion.estadoActual.tipo];
return badge[prestacion.estadoActual.tipo];
}
}
4 changes: 2 additions & 2 deletions src/app/components/top/pipes/estado-solicitud.pipe.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ export class EstadoSolicitudPipe implements PipeTransform {
constructor(private auth: Auth) { }
transform(prestacion: IPrestacion): any {

if (prestacion.solicitud.turno && prestacion.estadoActual.tipo !== 'validada') {
if (prestacion.solicitud.turno && prestacion.estadoActual.tipo !== 'validada' && prestacion.estadoActual.tipo !== 'ejecucion') {
return 'Turno dado';
}
if (prestacion.solicitud.organizacion.id === this.auth.organizacion.id) {
if (prestacion.estadoActual.tipo === 'pendiente' && prestacion ?.paciente && !prestacion.solicitud.turno) {
if (prestacion.estadoActual.tipo === 'pendiente' && prestacion?.paciente && !prestacion.solicitud.turno) {
return 'pendiente';
}
const esAuditoria = prestacion.estadoActual.tipo === 'auditoria' || prestacion.estadoActual.tipo === 'rechazada';
Expand Down
4 changes: 2 additions & 2 deletions src/app/components/top/solicitudes/solicitudes.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -413,7 +413,7 @@ export class SolicitudesComponent implements OnInit {
if (this.estadoEntrada) {
if (this.estadoEntrada.id === 'turnoDado') {
params['tieneTurno'] = true;
params.estados = params.estados.filter(e => e !== 'validada');
params.estados = params.estados.filter(e => e !== 'validada' && e !== 'ejecucion');
} else if (this.estadoEntrada.id === 'registroHUDS') {
params['estados'] = ['validada'];
} else {
Expand Down Expand Up @@ -455,7 +455,7 @@ export class SolicitudesComponent implements OnInit {
if (this.estadoSalida) {
if (this.estadoSalida.id === 'turnoDado') {
params['tieneTurno'] = true;
params.estados = params.estados.filter(e => e !== 'validada');
params.estados = params.estados.filter(e => e !== 'validada' && e !== 'ejecucion');
} else if (this.estadoSalida.id === 'registroHUDS') {
params['estados'] = ['validada'];
} else {
Expand Down
17 changes: 9 additions & 8 deletions src/app/components/top/solicitudes/solicitudes.html
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,9 @@
{{prestacion.solicitud.registros[0].valor.solicitudPrestacion.prioridad}}
</plex-badge>
<plex-badge type="{{prestacion | estadoPrestacion}}"
*ngIf="!prestacion.solicitud.turno && prestacion.estadoActual.tipo !== 'rechazada' && prestacion.estadoActual.tipo !== 'auditoria' && prestacion.estadoActual.tipo !== 'validada' && prestacion.estadoActual.tipo !== 'vencida'">
{{prestacion | estadoSolicitud}}
*ngIf="prestacion.estadoActual.tipo !== 'rechazada' && prestacion.estadoActual.tipo !== 'auditoria' && prestacion.estadoActual.tipo !== 'validada' && prestacion.estadoActual.tipo !== 'vencida'">
{{ prestacion | estadoSolicitud}}

</plex-badge>
<plex-badge type="{{prestacion | estadoPrestacion}}"
*ngIf="!prestacion.solicitud.turno && prestacion.estadoActual.tipo === 'validada'">
Expand All @@ -195,7 +196,8 @@
</span>
</plex-badge>
</ng-container>
<plex-badge *ngIf="estado === 'Turno dado'" type="success">Turno dado</plex-badge>
<plex-badge *ngIf="prestacion.solicitud.turno && !prestacion.estadoActual.tipo === 'ejecucion' "
type="success">Turno dado</plex-badge>
<plex-badge *ngIf="prestacion.solicitud.turno && prestacion.estadoActual.tipo === 'validada'"
type="success">
Registro en HUDS</plex-badge>
Expand Down Expand Up @@ -321,7 +323,7 @@
</plex-badge>
<plex-badge *ngIf="prestacion.estadoActual.tipo !== 'rechazada' && prestacion.estadoActual.tipo !== 'validada' && prestacion.solicitud.turno"
type="{{prestacion | estadoPrestacion}}">
Turno Dado
{{ prestacion | estadoSolicitud}}
</plex-badge>
<plex-badge *ngIf="prestacion.solicitud.turno && prestacion.estadoActual.tipo === 'validada'"
type="success">Registro en
Expand Down Expand Up @@ -382,10 +384,9 @@
</plex-help>

<!-- CONTINUAR REGISTRO -->
<plex-button class="mr-1"
*ngIf="botones.continuarRegistro || prestacionSeleccionada.estadoActual.tipo === 'ejecucion'"
icon="lapiz-documento" tooltip="Continuar registro" tooltipPosition="left"
size="sm" type="success" (click)="onContinuarRegistro()">
<plex-button class="mr-1" *ngIf="botones.continuarRegistro " icon="lapiz-documento"
tooltip="Continuar registro" tooltipPosition="left" size="sm"
type="success" (click)="onContinuarRegistro()">
</plex-button>

<!-- VOLVER A AUDITORIA -->
Expand Down

0 comments on commit 97cd467

Please sign in to comment.