Skip to content

Commit

Permalink
feat(CIT): modifica recuperacion de pacientes (#3072)
Browse files Browse the repository at this point in the history
  • Loading branch information
ma7payne authored Oct 10, 2024
1 parent 2620852 commit 02adc46
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 54 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ import { Auth } from '@andes/auth';
import { Plex } from '@andes/plex';
import { Component, OnInit, ViewChild } from '@angular/core';
import { NgForm } from '@angular/forms';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { ILlamado } from 'src/app/interfaces/turnos/IListaEspera';
import { ListaEsperaService } from 'src/app/services/turnos/listaEspera.service';
import { TurnoService } from 'src/app/services/turnos/turno.service';
import { map } from 'rxjs/operators';
import { Observable } from 'rxjs';

@Component({
selector: 'demanda-insatisfecha',
Expand Down Expand Up @@ -40,8 +40,8 @@ export class DemandaInsatisfechaComponent implements OnInit {
},
paciente: null
};

public estadosLlamado = [
{ id: 'turnoAsignado', nombre: 'Turno asignado' },
{ id: 'noContesta', nombre: 'No contesta' },
{ id: 'numeroEquivocado', nombre: 'Numero equivocado' },
{ id: 'otro', nombre: 'Otro' }
Expand All @@ -63,7 +63,11 @@ export class DemandaInsatisfechaComponent implements OnInit {
public columns = [
{
key: 'paciente',
label: 'Paciente'
label: 'Nombre'
},
{
key: 'dni',
label: 'DNI'
},
{
key: 'prestacion',
Expand Down Expand Up @@ -91,6 +95,8 @@ export class DemandaInsatisfechaComponent implements OnInit {
},
];

public skip = 0;
public limit = 15;
public tabIndex = 0;
public pacienteFields = ['sexo', 'fechaNacimiento', 'cuil', 'financiador', 'numeroAfiliado', 'direccion'];

Expand All @@ -108,24 +114,29 @@ export class DemandaInsatisfechaComponent implements OnInit {

this.filtros.fechaDesde = fechaDesdeInicial;
this.filtros.organizacion = this.auth.organizacion.id;
this.selectorOrganizacion = this.auth.organizacion.id;

this.getDemandas({ fechaDesde: fechaDesdeInicial, organizacion: this.auth.organizacion.id });
this.getDemandas();

this.auth.organizaciones(true).subscribe((organizaciones) => {
this.listaOrganizaciones = organizaciones;
});
}

private getDemandas(filtros) {
this.listaEsperaService.get({ ...filtros, estado: 'pendiente' }).subscribe((listaEspera: any[]) => {
this.listaEspera = listaEspera;
this.listaEspera.forEach(item => {
item.motivos = [...new Set(item.demandas.map(({ motivo }) => motivo))];
private getDemandas(reset?: boolean) {
if (this.filtros.fechaDesde && this.filtros.organizacion) {
if (reset) { this.skip = 0; }

this.listaEsperaService.get({ ...this.filtros, estado: 'pendiente', skip: this.skip, limit: this.limit }).subscribe((listaEspera) => {
this.listaEspera = reset ? listaEspera : [...this.listaEspera, ...listaEspera];

this.listaEspera.forEach(item => {
item.motivos = [...new Set(item.demandas.map(({ motivo }) => motivo))];
});
});
});
}
}


public obtenerObjetoMasAntiguo() {
if (this.listaEspera.length === 0) {
return null;
Expand All @@ -143,7 +154,7 @@ export class DemandaInsatisfechaComponent implements OnInit {
});

if (historial) {
this.serviceTurno.getHistorial({ pacienteId: this.itemSelected.paciente.id }).pipe(
this.serviceTurno.getHistorial({ pacienteId: this.itemSelected.paciente._id }).pipe(
map(historial => historial.filter(item => moment(item.horaInicio).isAfter(moment(primerDemanda.fecha))))
).subscribe(historialFiltrado => {
this.listaHistorial = historialFiltrado;
Expand All @@ -164,14 +175,14 @@ export class DemandaInsatisfechaComponent implements OnInit {

public actualizarDemanda(demanda) {
const i = this.listaEspera.findIndex(item => item.id === demanda.id);

this.listaEspera[i] = demanda;
this.listaEspera.forEach(item => {
item.motivos = [...new Set(item.demandas.map(({ motivo }) => motivo))];
});
}

public actualizarFiltros({ value }, tipo) {

if (tipo === 'paciente') {
this.filtros = { ...this.filtros, paciente: value };
}
Expand All @@ -195,10 +206,13 @@ export class DemandaInsatisfechaComponent implements OnInit {

if (tipo === 'organizacion') {
const values = value?.map(organizacion => organizacion.id);
this.filtros = { ...this.filtros, organizacion: values?.join(',') };

if (values) {
this.filtros = { ...this.filtros, organizacion: values?.join(',') };
}
}

this.getDemandas(this.filtros);
this.getDemandas(true);
}

public cerrar() { this.itemSelected = null; }
Expand All @@ -210,14 +224,14 @@ export class DemandaInsatisfechaComponent implements OnInit {
this.formLlamados?.form.markAsPristine();
}

public async guardarLlamado(id) {
public async guardarLlamado() {
this.formLlamados.control.markAllAsTouched();

if (this.formLlamados.form.valid) {
try {
this.listaLlamados.push({ ...this.nuevoLlamado, createdBy: this.auth.usuario, createdAt: moment() });

this.listaEsperaService.patch(id, 'llamados', this.listaLlamados).subscribe((demanda) => {
this.listaEsperaService.patch(this.itemSelected._id, 'llamados', this.listaLlamados).subscribe((demanda) => {
this.plex.toast('success', 'Llamado registrado exitosamente');
this.agregarLlamado();
this.actualizarDemanda(demanda);
Expand Down Expand Up @@ -264,17 +278,22 @@ export class DemandaInsatisfechaComponent implements OnInit {
this.prestacion.paciente = this.paciente;
}

finalizarDemanda() {
public finalizarDemanda() {
this.showFinalizarDemanda = true;
}

volver() {
public volver() {
this.showTurnos = false;
this.showFinalizarDemanda = false;
this.selectorFinalizar = null;
}

onInputChange() {
public onInputChange() {
this.textoOtros = null;
}

public onScroll() {
this.skip += this.limit;
this.getDemandas();
}
}
19 changes: 12 additions & 7 deletions src/app/components/demandaInsatisfecha/demanda-insatisfecha.html
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,20 @@
</plex-label>
</div>
<ng-container>
<plex-table *ngIf="listaEspera.length" [columns]="columns" #table="plTable" [offset]="102">
<plex-table *ngIf="listaEspera.length" [columns]="columns" #table="plTable" [offset]="105"
(scroll)="onScroll()">
<plex-title titulo="Listado de pacientes" size="sm"></plex-title>
<tr *ngFor="let item of listaEspera" (click)="seleccionarDemanda(item)"
[class.selected]="item.id === itemSelected?.id" [class.selectable]="true">
<td>{{item.paciente.nombreCompleto}}</td>
<td>{{item.tipoPrestacion.nombre}}</td>
[class.selected]="item._id === itemSelected?._id" [class.selectable]="true">
<td>{{item.paciente | nombre}}</td>
<td>{{item.paciente | documento }}</td>
<td>{{item.tipoPrestacion.term}}</td>
<td>{{item.fecha | fecha}}</td>
<td>{{item.motivos.join(' - ')}}</td>
<td>{{item.motivos?.join(' - ')}}</td>
<td class="align-center" justify="center">
<plex-badge class="ml-1" size="sm" type="info">
{{item.demandas.length}}
</plex-badge>
<plex-badge class="ml-1" size="sm" type="info">
{{item.estado}}
</plex-badge>
Expand Down Expand Up @@ -76,7 +81,7 @@
<ng-container>
<plex-item *ngFor="let demanda of itemSelected.demandas">
<plex-label size="md" titulo="Prestacion"
subtitulo="{{ itemSelected.tipoPrestacion.nombre }}">
subtitulo="{{ itemSelected.tipoPrestacion.term }}">
</plex-label>
<plex-label size="md" titulo="Efector"
subtitulo="{{ demanda.organizacion.nombre }}">
Expand All @@ -98,7 +103,7 @@
</plex-button>
</ng-container>
<ng-container *ngIf="verFormularioLlamado">
<plex-button size="sm" type="success" icon="check" (click)="guardarLlamado(itemSelected.id)"
<plex-button size="sm" type="success" icon="check" (click)="guardarLlamado()"
ariaLabel="Guardar llamado" class="mr-1">
</plex-button>
<plex-button size="sm" type="danger" icon="close" (click)="agregarLlamado()"
Expand Down
8 changes: 4 additions & 4 deletions src/app/components/turnos/dashboard/demandaInsatisfecha.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { ListaEsperaService } from 'src/app/services/turnos/listaEspera.service';
import { Auth } from '@andes/auth';
import { Plex } from '@andes/plex';
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { IPaciente } from 'src/app/core/mpi/interfaces/IPaciente';
import { ProfesionalService } from './../../../services/profesional.service';
import { ConceptosTurneablesService } from 'src/app/services/conceptos-turneables.service';
import { ListaEsperaService } from 'src/app/services/turnos/listaEspera.service';
import { ProfesionalService } from './../../../services/profesional.service';

@Component({
selector: 'demandaInsatisfecha',
Expand Down Expand Up @@ -53,7 +53,7 @@ export class demandaInsatisfechaComponent {

guardar() {
if (this.motivo && this.tipoPrestacion) {
this.listaEsperaService.save(this.paciente, this.tipoPrestacion, this.estado, this.profesional, this.organizacion, this.motivo.nombre, this.origen).subscribe({
this.listaEsperaService.save({ id: this.paciente.id }, this.tipoPrestacion, this.estado, this.profesional, this.organizacion, this.motivo.nombre, this.origen).subscribe({
complete: () => {
this.plex.toast('success', 'Demanda insatisfecha guardada exitosamente!');
this.cerrar();
Expand Down
7 changes: 1 addition & 6 deletions src/app/interfaces/turnos/IListaEspera.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,7 @@ export interface IDemanda {

export interface IListaEspera {
id?: String;
paciente: {
id: String;
nombre: String;
apellido: String;
documento: String;
};
paciente: { id: string };
tipoPrestacion: any;
fecha: Date;
vencimiento?: Date;
Expand Down
20 changes: 4 additions & 16 deletions src/app/services/turnos/listaEspera.service.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import { IDemanda, IListaEspera } from './../../interfaces/turnos/IListaEspera';
import { Injectable } from '@angular/core';
import { Plex } from '@andes/plex';
import { Server } from '@andes/shared';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { IPacienteBasico } from 'src/app/core/mpi/interfaces/IPaciente';
import { Plex } from '@andes/plex';
import { IDemanda, IListaEspera } from './../../interfaces/turnos/IListaEspera';

@Injectable()
export class ListaEsperaService {
Expand Down Expand Up @@ -56,19 +55,8 @@ export class ListaEsperaService {
fecha: moment().toDate(),
origen
};
const datosPaciente: IPacienteBasico = {
id: paciente.id,
nombre: paciente.nombre,
alias: paciente.alias,
apellido: paciente.apellido,
documento: paciente.documento,
numeroIdentificacion: paciente.numeroIdentificacion,
fechaNacimiento: paciente.fechaNacimiento,
sexo: paciente.sexo,
genero: paciente.genero
};
const listaEspera: IListaEspera = {
paciente: datosPaciente,
paciente,
fecha: moment().toDate(),
vencimiento: null,
estado,
Expand Down

0 comments on commit 02adc46

Please sign in to comment.