From 4aebe2c8c308b44ea76b4e8652e26611f5479aa8 Mon Sep 17 00:00:00 2001 From: MarianoCampetella Date: Wed, 15 Apr 2026 09:22:44 -0300 Subject: [PATCH] =?UTF-8?q?Agregar=20obra=20social=20en=20pacientes=20por?= =?UTF-8?q?=20auditor=C3=ADa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../seleccionar-financiador.component.ts | 23 +- .../revision-agenda.component.ts | 48 +++-- .../operaciones-agenda/revision-agenda.html | 199 +++++++++++------- 3 files changed, 167 insertions(+), 103 deletions(-) diff --git a/src/app/components/turnos/dar-turnos/seleccionar-financiador.component.ts b/src/app/components/turnos/dar-turnos/seleccionar-financiador.component.ts index fbe62c6fe6..1275ccb3a6 100644 --- a/src/app/components/turnos/dar-turnos/seleccionar-financiador.component.ts +++ b/src/app/components/turnos/dar-turnos/seleccionar-financiador.component.ts @@ -65,7 +65,10 @@ export class SeleccionarFinanciadorComponent implements OnChanges { private resetComponentState() { this.showSelector = false; this.showListado = false; + this.datosFinanciadores = []; + this.financiadorSeleccionado = undefined; this.otroFinanciadorSeleccionado = undefined; + this.busquedaFinanciador = undefined; } private cargarDatosModoEditable() { @@ -91,9 +94,8 @@ export class SeleccionarFinanciadorComponent implements OnChanges { if (!paciente) { return; } else { - this.financiadoresPaciente = paciente.financiador; + this.financiadoresPaciente = paciente.financiador || []; } - this.showSelector = true; if (this.financiadoresPaciente?.length) { @@ -108,7 +110,7 @@ export class SeleccionarFinanciadorComponent implements OnChanges { } if (!financiadorParaSeleccion) { - financiadorParaSeleccion = this.paciente.obraSocial ? this.paciente.obraSocial : this.financiadoresPaciente[0]; + financiadorParaSeleccion = paciente.obraSocial ? paciente.obraSocial : this.financiadoresPaciente[0]; } const { financiador, nombre, numeroAfiliado } = financiadorParaSeleccion; @@ -131,15 +133,14 @@ export class SeleccionarFinanciadorComponent implements OnChanges { ]; } else { - this.financiadorSeleccionado = this.paciente.obraSocial - ? this.paciente.obraSocial.nombre + this.financiadorSeleccionado = paciente.obraSocial + ? paciente.obraSocial.nombre : undefined; - this.numeroAfiliado = this.paciente.obraSocial - ? this.paciente.obraSocial.numeroAfiliado + this.numeroAfiliado = paciente.obraSocial + ? paciente.obraSocial.numeroAfiliado : ''; } - this.guardarFinanciador(); } @@ -175,6 +176,7 @@ export class SeleccionarFinanciadorComponent implements OnChanges { if (nombreSeleccionado === 'otras') { this.showListado = true; this.busquedaFinanciador = undefined; + this.otroFinanciadorSeleccionado = null; } else if (event.value === 'Sin obra social') { this.busquedaFinanciador = { nombre: 'Sin obra social' }; this.numeroAfiliado = undefined; @@ -195,6 +197,11 @@ export class SeleccionarFinanciadorComponent implements OnChanges { } public guardarFinanciador() { + if (!this.busquedaFinanciador) { + this.setFinanciador.emit(undefined); + return; + } + if (this.busquedaFinanciador) { this.busquedaFinanciador.numeroAfiliado = this.numeroAfiliado; } diff --git a/src/app/components/turnos/gestor-agendas/operaciones-agenda/revision-agenda.component.ts b/src/app/components/turnos/gestor-agendas/operaciones-agenda/revision-agenda.component.ts index e79e080a74..19ed7ba3b3 100644 --- a/src/app/components/turnos/gestor-agendas/operaciones-agenda/revision-agenda.component.ts +++ b/src/app/components/turnos/gestor-agendas/operaciones-agenda/revision-agenda.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewEncapsulation, OnDestroy } from '@angular/core'; +import { Component, OnInit, OnDestroy } from '@angular/core'; import { Router, ActivatedRoute } from '@angular/router'; import { Auth } from '@andes/auth'; import { Plex } from '@andes/plex'; @@ -26,8 +26,6 @@ import { Unsubscribe } from '@andes/shared'; export class RevisionAgendaComponent implements OnInit, OnDestroy { private lastRequest: Subscription; private _agenda: any; - private estadoPendienteAuditoria; - private estadoCodificado; public agenda: any; public cantidadTurnosAsignados: number; public indiceReparo: any; @@ -52,6 +50,9 @@ export class RevisionAgendaComponent implements OnInit, OnDestroy { public loading = false; public pacienteDetalle; public prestacionAuditable; + public financiador; + public showSidebar = false; + public numeroAfiliado; constructor( private pacienteCache: PacienteCacheService, @@ -133,12 +134,16 @@ export class RevisionAgendaComponent implements OnInit, OnDestroy { this.turnoSeleccionado.paciente = pacienteTurno; this.turnoSeleccionado.estado = estado; } + if (this.financiador) { + this.turnoSeleccionado.paciente.obraSocial = this.financiador; + } } seleccionarTurno(turno, bloque) { if (this.lastRequest) { this.lastRequest.unsubscribe(); } + this.showSidebar = (this.turnoSeleccionado !== turno) ? true : false; this.pacienteDetalle = null; this.existeCodificacionProfesional = false; this.diagnosticos = []; @@ -173,7 +178,9 @@ export class RevisionAgendaComponent implements OnInit, OnDestroy { if (this.turnoSeleccionado && this.turnoSeleccionado.asistencia) { this.turnoSeleccionado.asistencia = asistencia.id; } - this.onSave(); + if (this.turnoTipoPrestacion) { + this.turnoSeleccionado.tipoPrestacion = this.turnoTipoPrestacion; + } } asistenciaSeleccionada(asistencia) { @@ -199,7 +206,6 @@ export class RevisionAgendaComponent implements OnInit, OnDestroy { }; nuevoDiagnostico.codificacionAuditoria = diagnostico; this.diagnosticos.push(nuevoDiagnostico); - this.onSave(); } borrarDiagnostico(index) { @@ -211,7 +217,6 @@ export class RevisionAgendaComponent implements OnInit, OnDestroy { if (index === 0) { this.plex.toast('warning', 'Información', 'El diagnostico principal fue eliminado'); } - this.onSave(); } aprobar(index) { @@ -222,7 +227,6 @@ export class RevisionAgendaComponent implements OnInit, OnDestroy { this.diagnosticos[j].codificacionAuditoria = this.diagnosticos[j].codificacionProfesional.cie10; } } - this.onSave(); } /** * Verifica si cada turno tiene la asistencia verificada y modifica el estado de la agenda. @@ -285,12 +289,14 @@ export class RevisionAgendaComponent implements OnInit, OnDestroy { }; label = 'Pendiente Asistencia'; } else { + // Solo modificamos el turno, no la agenda por completo. Ej: la obra social. + this.plex.toast('success', 'El turno de la agenda fue actualizado'); patchear = false; } } } if (patchear) { - this.serviceAgenda.patch(this._agenda.id, patch).subscribe(resultado => { + this.serviceAgenda.patch(this._agenda.id, patch).subscribe(() => { this.plex.toast('success', 'El estado de la agenda fue actualizado', label); }); } @@ -322,7 +328,9 @@ export class RevisionAgendaComponent implements OnInit, OnDestroy { return turno?.asistencia && turno?.asistencia === 'asistio' && !turno?.diagnostico?.codificaciones[0]?.codificacionAuditoria?.codigo && !turno?.diagnostico?.codificaciones[0]?.codificacionProfesional?.snomed?.term && turno.tipoPrestacion?.auditable === true; } - cancelar() { + guardar() { + this.onSave(); + this.showSidebar = false; this.turnoSeleccionado = null; } @@ -330,6 +338,8 @@ export class RevisionAgendaComponent implements OnInit, OnDestroy { // Se guarda el turno seleccionado if (this.paciente) { this.asignarPaciente(this.paciente); + } else { + this.turnoSeleccionado.paciente.obraSocial = this.financiador; } if (this.turnoTipoPrestacion) { this.turnoSeleccionado.tipoPrestacion = this.turnoTipoPrestacion; @@ -355,9 +365,8 @@ export class RevisionAgendaComponent implements OnInit, OnDestroy { turno: this.turnoSeleccionado }; } - if (this.turnoSeleccionado.tipoPrestacion) { - this.serviceTurno.put(datosTurno).subscribe(resultado => { + this.serviceTurno.put(datosTurno).subscribe(() => { this.cerrarAsistencia(); }); } else { @@ -404,18 +413,11 @@ export class RevisionAgendaComponent implements OnInit, OnDestroy { this.diagnosticos[this.indiceReparo].codificacionAuditoria = reparo; this.showReparo = false; } - this.onSave(); } borrarReparo(index) { this.diagnosticos[index].codificacionAuditoria = null; this.showReparo = false; - this.onSave(); - } - - volverRevision() { - this.refresh(); - this.cerrarAsistencia(); } // -------------- SOBRE BUSCADOR PACIENTES ---------------- @@ -446,6 +448,16 @@ export class RevisionAgendaComponent implements OnInit, OnDestroy { this.paciente = null; } + public setFinanciador(financiador) { + this.financiador = financiador; + } + + cerrar() { + this.showSidebar = false; + this.showRegistrosTurno = false; + this.turnoSeleccionado = null; + } + // ---------------------------------- // Componente paciente-listado diff --git a/src/app/components/turnos/gestor-agendas/operaciones-agenda/revision-agenda.html b/src/app/components/turnos/gestor-agendas/operaciones-agenda/revision-agenda.html index d0acbacffb..5489ed1c00 100644 --- a/src/app/components/turnos/gestor-agendas/operaciones-agenda/revision-agenda.html +++ b/src/app/components/turnos/gestor-agendas/operaciones-agenda/revision-agenda.html @@ -1,4 +1,4 @@ - + @@ -11,8 +11,8 @@
+ [icon]="mostrarHeaderCompleto ? 'chevron-up' : 'chevron-down'" + (click)="mostrarHeaderCompleto = !mostrarHeaderCompleto">
@@ -52,7 +52,7 @@ {{agenda | espacioFisico}} Espacio físico no asignado + class="text-danger">Espacio físico no asignado
@@ -71,7 +71,7 @@ + [ngClass]="{'bg-inverse text-white': turnoSeleccionado === turno}"> {{ turno.horaInicio | date: 'HH:mm' }} @@ -86,6 +86,15 @@ | Sin documento (temporal) + + + + | OBRA SOCIAL: {{ turno.paciente.obraSocial.financiador}} + + + | SIN OBRA SOCIAL + + @@ -97,17 +106,17 @@ Disponible Turno + *ngIf="turno && turno.estado === 'turnoDoble'">Turno Doble Suspendido + *ngIf="turno && turno.estado === 'suspendido'">Suspendido | Asistencia Verificada | + *ngIf="isRegistradoProfesional(turno) && !isAuditado(turno)">| Registrado por Profesional | Auditado
Asignado por @@ -127,11 +136,6 @@ - - - - {{ sobreturno.horaInicio | date: 'HH:mm' }} @@ -140,10 +144,19 @@ nombre }} | + *ngIf="sobreturno.paciente && sobreturno.paciente.id && sobreturno.paciente.documento !== ''">| DNI: {{ sobreturno.paciente.documento }} - | DNI: Sin documento (temporal) + | DNI: Sin documento (temporal) + + + + | OBRA SOCIAL: {{ sobreturno.paciente.obraSocial.financiador}} + + + | SIN OBRA SOCIAL + @@ -155,15 +168,15 @@ Suspendido + *ngIf="sobreturno && sobreturno.estado === 'suspendido'">Suspendido | + *ngIf="sobreturno?.asistencia && sobreturno?.asistencia == 'asistio' && !sobreturno?.diagnostico?.codificaciones[0]?.codificacionAuditoria?.codigo">| Asistencia Verificada | + *ngIf="sobreturno?.paciente?.id && (sobreturno?.diagnostico?.codificaciones[0]?.codificacionAuditoria?.codigo || (sobreturno?.asistencia && sobreturno.asistencia =='noAsistio'|| sobreturno.asistencia=='sinDatos'))">| Auditado @@ -173,20 +186,27 @@ + (click)="agregarSobreturno()"> + (click)="agregarPaciente()">
- + - + + + + + + + *ngIf="turnoSeleccionado && turnoSeleccionado.estado !== 'suspendido' && turnoSeleccionado.estado !== 'turnoDoble'"> @@ -195,13 +215,13 @@ + titulo="{{ agenda.nominalizada ? 'No existe un paciente asociado al turno' : 'Actividad no nominalizada, no se dan turnos' }}" + subtitulo="" [tituloBold]="false"> + label="Buscar Paciente" (click)="buscarPaciente()"> @@ -213,13 +233,13 @@ + (searchClear)="onSearchClear()"> + [pacientes]="resultadoBusqueda" (selected)="onSelect($event)">
No se encontró ningún paciente.. @@ -229,25 +249,25 @@ + name="tipoPrestacionTurno" [data]="bloqueSeleccionado.tipoPrestaciones"> {{ turnoTipoPrestacion.nombre }} + *ngIf="turnoSeleccionado && (turnoSeleccionado.paciente?.id || paciente?.id) && !pacientesSearch"> + name="localidad" [data]="estadosAsistencia" placeholder="Seleccione..." + (change)="seleccionarAsistencia(turnoSeleccionado.asistencia)"> + *ngIf="turnoSeleccionado?.asistencia === 'asistio' && turnoSeleccionado?.tipoPrestacion?.auditable">
@@ -273,27 +293,32 @@ - + - + - + - + - + Principal - C2 + C2
{{diagnostico.codificacionProfesional.snomed.term}} + *ngIf="diagnostico.codificacionProfesional?.snomed?.term">{{diagnostico.codificacionProfesional.snomed.term}} - @@ -336,24 +362,24 @@
+ *ngIf="!diagnostico.codificacionProfesional?.snomed?.term &&!diagnostico.codificacionProfesional?.cie10?.codigo && !diagnostico.codificacionAuditoria?.codigo"> No encontrado + *ngIf="diagnostico.codificacionProfesional?.cie10 && (!diagnostico.codificacionAuditoria?.codigo || diagnostico.codificacionAuditoria?.codigo == diagnostico.codificacionProfesional?.cie10?.codigo )"> ({{diagnostico.codificacionProfesional.cie10.codigo}}) {{diagnostico.codificacionProfesional.cie10.nombre}} + *ngIf="diagnostico.codificacionAuditoria?.codigo && diagnostico.codificacionProfesional?.snomed?.term && diagnostico.codificacionAuditoria?.codigo != diagnostico.codificacionProfesional?.cie10?.codigo"> ({{diagnostico.codificacionAuditoria.codigo}}) {{diagnostico.codificacionAuditoria.nombre}} ({{diagnostico.codificacionAuditoria.codigo}}) + *ngIf="!diagnostico.codificacionProfesional?.snomed?.term && diagnostico.codificacionAuditoria?.nombre">({{diagnostico.codificacionAuditoria.codigo}}) {{diagnostico.codificacionAuditoria.nombre}}
@@ -378,37 +404,40 @@ - + + icon="delete" tooltip="Eliminar" class="btn btn-sm" type="danger" + (click)="borrarDiagnostico(i)"> - + - + + (change)="onSave()" [(ngModel)]='diagnostico.primeraVez'> + *ngIf="diagnostico.codificacionProfesional?.cie10?.codigo && diagnostico.primeraVez"> Si + *ngIf="diagnostico.codificacionAuditoria?.codigo === diagnostico.codificacionProfesional?.cie10?.codigo"> Aprobado Principal
- C2 + C2
+ *ngIf="diagnostico.codificacionProfesional?.cie10 && (!diagnostico.codificacionAuditoria?.codigo || diagnostico.codificacionAuditoria?.codigo == diagnostico.codificacionProfesional?.cie10?.codigo )"> ({{diagnostico.codificacionProfesional.cie10.codigo}}) {{diagnostico.codificacionProfesional.cie10.nombre}} + *ngIf="diagnostico.codificacionAuditoria?.codigo && diagnostico.codificacionProfesional?.snomed?.term && diagnostico.codificacionAuditoria?.codigo != diagnostico.codificacionProfesional?.cie10?.codigo"> ({{diagnostico.codificacionAuditoria.codigo}}) {{diagnostico.codificacionAuditoria.nombre}} ({{diagnostico.codificacionAuditoria.codigo}}) + *ngIf="!diagnostico.codificacionProfesional?.snomed?.term && diagnostico.codificacionAuditoria?.nombre">({{diagnostico.codificacionAuditoria.codigo}}) {{diagnostico.codificacionAuditoria.nombre}}
+ *ngIf="!diagnostico.codificacionProfesional?.snomed && diagnostico.codificacionProfesional?.cie10?.causa"> {{diagnostico.codificacionProfesional.cie10.causa}} + *ngIf="!diagnostico.codificacionProfesional?.snomed && diagnostico.codificacionProfesional?.cie10?.subcausa"> {{diagnostico.codificacionProfesional.cie10.subcausa}} @@ -462,7 +492,7 @@ + *ngIf="turnoSeleccionado && diagnosticos[indiceReparo]?.codificacionProfesional && showReparo">

Codificación del Profesional

@@ -481,6 +511,21 @@
+ + + +
+ + + + + + +
+