diff --git a/src/app/components/buscadorTurnosPrestaciones/turnos-prestaciones.component.ts b/src/app/components/buscadorTurnosPrestaciones/turnos-prestaciones.component.ts index ca2b8f2fbb..6ebb7b21e5 100644 --- a/src/app/components/buscadorTurnosPrestaciones/turnos-prestaciones.component.ts +++ b/src/app/components/buscadorTurnosPrestaciones/turnos-prestaciones.component.ts @@ -26,8 +26,6 @@ import { ObraSocialService } from '../../services/obraSocial.service'; export class TurnosPrestacionesComponent implements OnInit, OnDestroy { public busqueda$: Observable; public paciente$: Observable; - public obraSocialPaciente: any[] = []; - public prepagas: any[] = []; public lastSelect$ = new BehaviorSubject(null); public descargasPendientes = false; public prestacionesExport = []; @@ -59,11 +57,8 @@ export class TurnosPrestacionesComponent implements OnInit, OnDestroy { public prestacionesMax = 500; public showHint = false; public prestacionIniciada; - public showListaPrepagas: Boolean = false; - public modelo: any = { - obraSocial: '', - prepaga: '' - }; + + public financiador; public columnas = { fecha: true, @@ -203,9 +198,6 @@ export class TurnosPrestacionesComponent implements OnInit, OnDestroy { ); this.initialize(); - this.obraSocialService.getPrepagas().subscribe(prepagas => { - this.prepagas = prepagas; - }); } initialize() { @@ -306,8 +298,11 @@ export class TurnosPrestacionesComponent implements OnInit, OnDestroy { } } + setFinanciador(financiador: any) { + this.financiador = financiador; + } + mostrarPrestacion(datos) { - this.modelo.prepaga = null; this.descargasPendientes = false; this.prestacionIniciada = datos.idPrestacion; this.hudsService.generateHudsToken(this.auth.usuario, this.auth.organizacion, datos.paciente, 'auditoria', this.auth.profesional ? this.auth.profesional : null, datos.turno ? datos.turno.id : null, datos.idPrestacion ? datos.idPrestacion : null).subscribe(hudsToken => { @@ -320,15 +315,10 @@ export class TurnosPrestacionesComponent implements OnInit, OnDestroy { this.lastSelect$.next(datos); datos.seleccionada = true; this.showPrestacion = true; - this.showListaPrepagas = false; this.prestacion = datos; - this.cargarObraSocial(datos); }); - if (datos.financiador) { - this.modelo.prepaga = ''; - }; this.pacienteService.getById(datos.paciente.id).subscribe(paciente => { - this.paciente = paciente;; + this.paciente = paciente; }); } @@ -340,9 +330,9 @@ export class TurnosPrestacionesComponent implements OnInit, OnDestroy { this.prestacion.origen = 'buscador'; const turno = this.prestacion; - if (this.modelo.prepaga !== '') { + if (this.financiador.prepaga) { turno.obraSocial = 'prepaga'; - turno.prepaga = this.modelo.prepaga; + turno.prepaga = this.financiador; } this.facturacionAutomaticaService.post(turno).subscribe(respuesta => { if (respuesta.message) { @@ -416,47 +406,7 @@ export class TurnosPrestacionesComponent implements OnInit, OnDestroy { } } - cargarObraSocial(datos) { - if ((datos.idPrestacion)) { - this.obraSocialPaciente = []; - this.obraSocialService.getObrasSociales(datos.paciente.documento).subscribe(resultado => { - if (resultado.length) { - this.obraSocialPaciente = resultado.map((os: any) => { - const osPaciente = { - 'id': os.financiador, - 'label': os.financiador - }; - return osPaciente; - }); - this.modelo.obraSocial = this.obraSocialPaciente[0].label; - } else { - if (datos.paciente.obraSocial) { - this.obraSocialPaciente.push({ 'id': datos.paciente.obraSocial.nombre, 'label': datos.paciente.obraSocial.nombre }); - this.modelo.obraSocial = this.obraSocialPaciente[0].label; - } - - - } - this.obraSocialPaciente.push({ 'id': 'prepaga', 'label': 'Prepaga' }); - }); - } - } - - seleccionarObraSocial(event) { - if (event.value === 'prepaga') { - this.modelo.prepaga = null; - this.obraSocialService.getPrepagas().subscribe(prepagas => { - this.prepagas = prepagas; - }); - this.showListaPrepagas = true; - } else { - this.showListaPrepagas = false; - this.modelo.prepaga = ''; - } - this.modelo.obraSocial = event.value; - } - generarComprobante() { - return this.prestacionIniciada && this.puedeEmitirComprobante && this.modelo.prepaga !== null && ((!this.prestacion.estadoFacturacion) || this.prestacion.estadoFacturacion?.estado !== 'Comprobante con prestacion'); + return this.prestacionIniciada && this.puedeEmitirComprobante && this.financiador && ((!this.prestacion.estadoFacturacion) || this.prestacion.estadoFacturacion?.estado !== 'Comprobante con prestacion'); } } diff --git a/src/app/components/buscadorTurnosPrestaciones/turnos-prestaciones.html b/src/app/components/buscadorTurnosPrestaciones/turnos-prestaciones.html index 97044a7f3c..ecb3907415 100644 --- a/src/app/components/buscadorTurnosPrestaciones/turnos-prestaciones.html +++ b/src/app/components/buscadorTurnosPrestaciones/turnos-prestaciones.html @@ -261,22 +261,22 @@ -
- - - - -
-
-
- -
{{modelo.obraSocial}}
+
+
+ + +
+ +
+
+ +
{{financiador?.nombre}}
+
+
+
+
-
diff --git a/src/app/components/buscadorTurnosPrestaciones/turnos-prestaciones.module.ts b/src/app/components/buscadorTurnosPrestaciones/turnos-prestaciones.module.ts index a44e849ce2..c4ee3ba1ed 100644 --- a/src/app/components/buscadorTurnosPrestaciones/turnos-prestaciones.module.ts +++ b/src/app/components/buscadorTurnosPrestaciones/turnos-prestaciones.module.ts @@ -14,6 +14,7 @@ import { ElementosRUPModule } from 'src/app/modules/rup/elementos-rup.module'; import { ExportHudsService } from 'src/app/modules/visualizacion-informacion/services/export-huds.service'; import { VisualizacionInformacionModule } from 'src/app/modules/visualizacion-informacion/visualizacion-informacion.module'; import { MPILibModule } from 'src/app/modules/mpi/mpi-lib.module'; +import { CITASLibModule } from '../turnos/citas.module'; @NgModule({ imports: [ @@ -29,6 +30,7 @@ import { MPILibModule } from 'src/app/modules/mpi/mpi-lib.module'; VisualizacionInformacionModule, ScrollingModule, MPILibModule, + CITASLibModule, RouterModule.forChild([ { path: '', component: TurnosPrestacionesComponent, pathMatch: 'full' }, ]) diff --git a/src/app/components/turnos/citas.module.ts b/src/app/components/turnos/citas.module.ts index 5ebbb9cdfa..387f592271 100644 --- a/src/app/components/turnos/citas.module.ts +++ b/src/app/components/turnos/citas.module.ts @@ -15,6 +15,7 @@ import { DirectiveLibModule } from '../../directives/directives.module'; import { BotonesAgendaPipe } from './gestor-agendas/pipes/botonesAgenda.pipe'; import { BotonesAgendaGeneralPipe } from './gestor-agendas/pipes/botonesAgendaGeneral.pipe'; import { BotonesTurnosPipe } from './gestor-agendas/pipes/botonesTurnos.pipe'; +import { SeleccionarFinanciadorComponent } from './dar-turnos/seleccionar-financiador.component'; @NgModule({ imports: [ @@ -36,6 +37,7 @@ import { BotonesTurnosPipe } from './gestor-agendas/pipes/botonesTurnos.pipe'; BotonesAgendaPipe, BotonesAgendaGeneralPipe, BotonesTurnosPipe, + SeleccionarFinanciadorComponent ], exports: [ DarTurnosComponent, @@ -45,7 +47,8 @@ import { BotonesTurnosPipe } from './gestor-agendas/pipes/botonesTurnos.pipe'; CalendarioComponent, BotonesAgendaPipe, BotonesAgendaGeneralPipe, - BotonesTurnosPipe + BotonesTurnosPipe, + SeleccionarFinanciadorComponent ], }) export class CITASLibModule { diff --git a/src/app/components/turnos/dar-turnos/dar-sobreturno.component.ts b/src/app/components/turnos/dar-turnos/dar-sobreturno.component.ts index 0a5525f591..78910d6d46 100644 --- a/src/app/components/turnos/dar-turnos/dar-sobreturno.component.ts +++ b/src/app/components/turnos/dar-turnos/dar-sobreturno.component.ts @@ -27,9 +27,6 @@ export class DarSobreturnoComponent implements OnChanges { public horaTurno = null; public telefono = ''; public cambioTelefono = false; - public obraSocialPaciente: any[] = []; - public prepagas: any[] = []; - public showListaPrepagas: Boolean = false; public hoy = moment().toDate(); public inicio: Date; public fin: Date; @@ -70,7 +67,6 @@ export class DarSobreturnoComponent implements OnChanges { this.servicePaciente.getById(this.idPaciente).subscribe(res => { this.paciente = res; - this.loadObraSocial(this.paciente); }); this.carpetaEfector = { @@ -86,55 +82,11 @@ export class DarSobreturnoComponent implements OnChanges { this.recuperarDatos(); } - getPrepagas() { - this.obraSocialService.getPrepagas().subscribe(prepagas => { - this.showListaPrepagas = true; - this.prepagas = prepagas; - }); - } - - loadObraSocial(paciente) { - if (!paciente || !paciente.documento) { - return; - } - this.obraSocialService.getObrasSociales(paciente.documento).subscribe(resultado => { - if (resultado.length) { - this.obraSocialPaciente = resultado.map((os: any) => { - let osPaciente; - - if (os.nombre) { - osPaciente = { - 'id': os.nombre, - 'label': os.nombre - }; - } else { - osPaciente = { - 'id': os.financiador, - 'label': os.financiador - }; - } - return osPaciente; - }); - - this.modelo.obraSocial = this.obraSocialPaciente[0].label; - this.obraSocialPaciente.push({ 'id': 'prepaga', 'label': 'Prepaga' }); - } else { - this.getPrepagas(); - } - }); - } - - seleccionarPrepaga(event) { - this.modelo.prepaga = event.value.nombre; - } - - seleccionarObraSocial(event) { - if (event.value === 'prepaga') { - this.getPrepagas(); - } else { - this.showListaPrepagas = false; - } - this.modelo.obraSocial = event && event.value; + setFinanciador(financiador) { + financiador && financiador.prepaga ? + this.modelo.prepaga = financiador.nombre + : + this.modelo.obraSocial = financiador; } // Operaciones con carpetaPaciente @@ -190,9 +142,8 @@ export class DarSobreturnoComponent implements OnChanges { nombre: null }; } else { - if (this.modelo.prepaga) { osPaciente = this.modelo.prepaga; } else { - osPaciente = this.paciente.financiador && this.paciente.financiador.find((os) => os.nombre === this.modelo.obraSocial); - } + this.modelo.prepaga ? osPaciente = this.modelo.prepaga : + osPaciente = this.modelo.obraSocial; } const pacienteSave: IPacienteBasico = { diff --git a/src/app/components/turnos/dar-turnos/dar-sobreturno.html b/src/app/components/turnos/dar-turnos/dar-sobreturno.html index 30f5c0688f..bbdcb5e2e9 100644 --- a/src/app/components/turnos/dar-turnos/dar-sobreturno.html +++ b/src/app/components/turnos/dar-turnos/dar-sobreturno.html @@ -11,23 +11,10 @@ [(ngModel)]="carpetaEfector.nroCarpeta">
-
-
- - -
-
- - -
-
-
- -
{{modelo.obraSocial}}
+
+
diff --git a/src/app/components/turnos/dar-turnos/dar-turnos.component.ts b/src/app/components/turnos/dar-turnos/dar-turnos.component.ts index 7c369e5fef..79ea86e871 100644 --- a/src/app/components/turnos/dar-turnos/dar-turnos.component.ts +++ b/src/app/components/turnos/dar-turnos/dar-turnos.component.ts @@ -48,6 +48,7 @@ export class DarTurnosComponent implements OnInit { public nota = ''; public link: String = ''; public changeCarpeta = false; + public financiador; hideDarTurno: boolean; @HostBinding('class.plex-layout') layout = true; // Permite el uso de flex-box en el componente autocitado = false; @@ -911,10 +912,11 @@ export class DarTurnosComponent implements OnInit { } + public setFinanciador(financiador) { + this.financiador = { ...financiador, numeroAfiliado: this.numeroAfiliado }; + } + private guardarTurno(agd: IAgenda) { - if (this.numeroAfiliado && this.obraSocialPaciente) { - this.obraSocialPaciente.numeroAfiliado = this.numeroAfiliado; - } const pacienteSave = { id: this.paciente.id, documento: this.paciente.documento, @@ -927,7 +929,7 @@ export class DarTurnosComponent implements OnInit { sexo: this.paciente.sexo, telefono: this.telefono, carpetaEfectores: this.paciente.carpetaEfectores, - obraSocial: this.obraSocialPaciente + obraSocial: this.financiador }; if (agd.dinamica) { const datosTurno = { @@ -945,7 +947,7 @@ export class DarTurnosComponent implements OnInit { this.turno.id = resultado.id; this.afterSaveTurno(pacienteSave); }, - error => { + () => { this.agenda = null; this.actualizar(); this.plex.toast('danger', 'Turno no asignado'); diff --git a/src/app/components/turnos/dar-turnos/dar-turnos.html b/src/app/components/turnos/dar-turnos/dar-turnos.html index 931a8dce01..7921f0eb26 100644 --- a/src/app/components/turnos/dar-turnos/dar-turnos.html +++ b/src/app/components/turnos/dar-turnos/dar-turnos.html @@ -190,8 +190,6 @@ - - @@ -280,6 +278,18 @@
No hay turnos en es + + +
+ + + + + +
+
+ @@ -317,6 +327,5 @@
No hay turnos en es
- \ No newline at end of file diff --git a/src/app/components/turnos/dar-turnos/seleccionar-financiador.component.ts b/src/app/components/turnos/dar-turnos/seleccionar-financiador.component.ts new file mode 100644 index 0000000000..2e808fd9da --- /dev/null +++ b/src/app/components/turnos/dar-turnos/seleccionar-financiador.component.ts @@ -0,0 +1,92 @@ +import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core'; +import { PacienteService } from 'src/app/core/mpi/services/paciente.service'; +import { ObraSocialService } from 'src/app/services/obraSocial.service'; + +@Component({ + selector: 'seleccionar-financiador', + templateUrl: 'seleccionar-financiador.html', +}) + +export class SeleccionarFinanciadorComponent implements OnChanges, OnInit { + public obrasSociales: any[] = []; + public selectorObrasSociales: any[] = []; + public selectorFinanciadores: any[] = []; + public obraSocial; + public showListado = false; + public financiador; + public financiadorBase = { + nombre: undefined, + financiador: undefined, + prepaga: false, + codigoPuco: undefined, + }; + + @Input() paciente; + @Output() setFinanciador = new EventEmitter(); + + constructor( + public obraSocialService: ObraSocialService, + private pacienteService: PacienteService, + ) { } + + seleccionarObraSocial(event) { + this.showListado = false; + + if (event.value === 'otras') { + this.showListado = true; + } else { + const foundObraSocial = this.obrasSociales.find(os => os.nombre === event.value || os.financiador === event.value); + this.obraSocial = event.value; + + this.setFinanciador.emit({ ...this.financiadorBase, ...foundObraSocial, prepaga: false }); + } + } + + seleccionarOtro(event) { + if (event.value) { + const { prepaga, nombre, financiador, codigoPuco } = event.value; + + this.setFinanciador.emit({ ...this.financiadorBase, prepaga: prepaga || false, nombre, financiador, codigoPuco, origen: 'ANDES' }); + } else { + this.setFinanciador.emit(undefined); + } + } + + cargarPrepagas() { + this.setFinanciador.emit(undefined); + + this.obraSocialService.getListado({}).subscribe(listado => { + this.selectorFinanciadores = listado.filter(financiador => + this.obrasSociales.every(os => + os.label !== financiador.nombre)); + }); + } + + cargarObraSocial(paciente) { + if (!paciente) { + return; + } else { + this.obrasSociales = paciente.financiador || []; + } + + if (this.obrasSociales.length) { + const { codigoPuco, financiador, nombre, origen } = this.obrasSociales[0]; + + this.selectorObrasSociales = this.obrasSociales.map((os: any) => ({ id: os.nombre || os.financiador, label: os.nombre || os.financiador })); + this.obraSocial = nombre || financiador; + this.setFinanciador.emit({ ...this.financiadorBase, codigoPuco, financiador, nombre, origen }); + } + + this.selectorObrasSociales.push({ 'id': 'otras', 'label': 'Otras' }); + } + + ngOnInit() { + this.cargarPrepagas(); + } + + ngOnChanges(changes: SimpleChanges) { + this.pacienteService.getById(changes.paciente.currentValue.id).subscribe(paciente => { + this.cargarObraSocial(paciente); + }); + } +} diff --git a/src/app/components/turnos/dar-turnos/seleccionar-financiador.html b/src/app/components/turnos/dar-turnos/seleccionar-financiador.html new file mode 100644 index 0000000000..1e3096b779 --- /dev/null +++ b/src/app/components/turnos/dar-turnos/seleccionar-financiador.html @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/src/app/components/turnos/punto-inicio/turnos-paciente.component.ts b/src/app/components/turnos/punto-inicio/turnos-paciente.component.ts index b972bf23ba..c08be64149 100644 --- a/src/app/components/turnos/punto-inicio/turnos-paciente.component.ts +++ b/src/app/components/turnos/punto-inicio/turnos-paciente.component.ts @@ -1,17 +1,17 @@ -import { Component, Input, OnInit, EventEmitter, Output, ViewEncapsulation } from '@angular/core'; -import { Plex } from '@andes/plex'; import { Auth } from '@andes/auth'; -import { FacturacionAutomaticaService } from './../../../services/facturacionAutomatica.service'; -import { DocumentosService } from '../../../services/documentos.service'; +import { Plex } from '@andes/plex'; +import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core'; import * as moment from 'moment'; +import { DocumentosService } from '../../../services/documentos.service'; +import { FacturacionAutomaticaService } from './../../../services/facturacionAutomatica.service'; // Servicios -import { TurnoService } from '../../../services/turnos/turno.service'; -import { AgendaService } from '../../../services/turnos/agenda.service'; import { ObraSocialService } from '../../../services/obraSocial.service'; +import { AgendaService } from '../../../services/turnos/agenda.service'; +import { TurnoService } from '../../../services/turnos/turno.service'; -import { IAgenda } from '../../../interfaces/turnos/IAgenda'; import { IPaciente } from '../../../core/mpi/interfaces/IPaciente'; +import { IAgenda } from '../../../interfaces/turnos/IAgenda'; @Component({ selector: 'turnos-paciente', templateUrl: 'turnos-paciente.html', @@ -23,23 +23,16 @@ export class TurnosPacienteComponent implements OnInit { cambioMotivo: boolean; turnoArancelamiento: any; showMotivoConsulta = false; - ultimosTurnos: any[]; puedeRegistrarAsistencia: boolean; puedeLiberarTurno: boolean; agenda: IAgenda; showLiberarTurno: boolean; todaysdate: Date; - obraSocialSeleccionada: String; _turnos: any; - _obraSocial: any; _operacion: string; - tituloOperacion = 'Operaciones de Turnos'; turnosPaciente: any; turnosSeleccionados: any[] = []; - showPuntoInicio = true; - showListaPrepagas: Boolean = false; - public obraSocialPaciente: any[] = []; - public prepagas: any[] = []; + public financiador = ''; public _paciente: IPaciente; @Input('operacion') set operacion(value: string) { @@ -70,10 +63,6 @@ export class TurnosPacienteComponent implements OnInit { } @Output() turnosPacienteChanged = new EventEmitter(); - public modelo: any = { - obraSocial: '' - }; - // Inicialización constructor(public servicioFA: FacturacionAutomaticaService, public obraSocialService: ObraSocialService, public documentosService: DocumentosService, public serviceTurno: TurnoService, public serviceAgenda: AgendaService, public plex: Plex, public auth: Auth) { } @@ -83,38 +72,10 @@ export class TurnosPacienteComponent implements OnInit { this.puedeLiberarTurno = this.auth.check('turnos:turnos:liberarTurno'); this.todaysdate = new Date(); this.todaysdate.setHours(0, 0, 0, 0); - this.loadObraSocial(); - this.obraSocialService.getPrepagas().subscribe(prepagas => { - this.prepagas = prepagas; - }); } - loadObraSocial() { - // TODO: si es en colegio médico hay que buscar en el paciente - if (!this._paciente) { - return; - } else { - this._obraSocial = this._paciente.financiador || []; - } - if (this._obraSocial.length) { - this.obraSocialPaciente = this._obraSocial.map((os: any) => { - let osPaciente; - - if (os.nombre) { - osPaciente = { - 'id': os.nombre, - 'label': os.nombre - }; - } else { - osPaciente = { - 'id': os.financiador, - 'label': os.financiador - }; - } - return osPaciente; - }); - this.modelo.obraSocial = this.obraSocialPaciente[0].label; - } - this.obraSocialPaciente.push({ 'id': 'prepaga', 'label': 'Prepaga' }); + + setFinanciador(financiador) { + this.financiador = financiador; } cambiarMotivo() { @@ -127,20 +88,11 @@ export class TurnosPacienteComponent implements OnInit { } showArancelamiento(turno) { - if (turno.obraSocial === 'prepaga' && !turno.prepaga) { - this.plex.toast('danger', 'Seleccione una Prepaga', '¡Atención!'); - return; - } - if (turno.obraSocial === 'prepaga' || turno.prepaga) { - this.obraSocialSeleccionada = turno.prepaga.nombre; - } else { - this.obraSocialSeleccionada = turno.obraSocial || (turno.paciente.obraSocial && turno.paciente.obraSocial.nombre); - } - - if (!this.obraSocialSeleccionada) { + if (!this.financiador) { this.plex.toast('danger', 'Seleccione una obra social o prepaga', '¡Atención!'); return; } + this.turnoArancelamiento = turno; this.showMotivoConsulta = true; } @@ -151,11 +103,11 @@ export class TurnosPacienteComponent implements OnInit { data['motivoConsulta'] = turno.motivoConsulta; } - const obraSocialUpdate = this._obraSocial.find(os => os.nombre === this.obraSocialSeleccionada); + const obraSocialUpdate = this._paciente.financiador.find(os => os.nombre === this.financiador); turno.paciente.obraSocial = (obraSocialUpdate) ? obraSocialUpdate : { codigoPuco: null, - nombre: this.obraSocialSeleccionada, - financiador: this.obraSocialSeleccionada + nombre: this.financiador, + financiador: this.financiador }; data['actualizaObraSocial'] = turno.paciente.obraSocial; @@ -192,8 +144,6 @@ export class TurnosPacienteComponent implements OnInit { this.plex.toast(tipoToast, mensaje); } }); - // }); - } liberarTurno(turno) { @@ -212,17 +162,5 @@ export class TurnosPacienteComponent implements OnInit { isToday(turno) { return (moment(turno.horaInicio)).isSame(new Date(), 'day'); } - - seleccionarObraSocial(event, elem) { - if (event.value === 'prepaga') { - this.obraSocialService.getPrepagas().subscribe(prepagas => { - elem.showListaPrepagas = true; - this.prepagas = prepagas; - }); - } else { - elem.showListaPrepagas = false; - } - elem.obraSocial = event && event.value; - } } diff --git a/src/app/components/turnos/punto-inicio/turnos-paciente.html b/src/app/components/turnos/punto-inicio/turnos-paciente.html index 40c8224adb..7c730d7018 100644 --- a/src/app/components/turnos/punto-inicio/turnos-paciente.html +++ b/src/app/components/turnos/punto-inicio/turnos-paciente.html @@ -72,30 +72,23 @@
- - - - + *ngIf="financiador?.nombre !== 'SUMAR' && turno && turno.profesionales?.length && turno.estado !== 'suspendido' && turno.paciente.documento"> +
-
+
Programa - {{modelo.obraSocial}} + {{financiador?.nombre}}
- + @@ -106,7 +99,7 @@
(click)="eventosTurno(turno,'sacarAsistencia')"> - @@ -125,8 +118,7 @@
- -
{{obraSocialSeleccionada}}
+
{{financiador?.nombre}}