diff --git a/src/app/modules/rup/components/ejecucion/prestacionEjecucion.component.ts b/src/app/modules/rup/components/ejecucion/prestacionEjecucion.component.ts index abf75147b8..4a1b43e022 100644 --- a/src/app/modules/rup/components/ejecucion/prestacionEjecucion.component.ts +++ b/src/app/modules/rup/components/ejecucion/prestacionEjecucion.component.ts @@ -24,6 +24,8 @@ import { PrestacionesService } from './../../services/prestaciones.service'; import { RecetaService } from 'src/app/services/receta.service'; import { TurnoService } from '../../../../services/turnos/turno.service'; import { ITurno } from '../../../../interfaces/turnos/ITurno'; +import { ECLQueriesService } from 'src/app/services/eclqueries.service'; +import { SnomedService } from 'src/app/apps/mitos'; @Component({ selector: 'rup-prestacionEjecucion', @@ -106,7 +108,7 @@ export class PrestacionEjecucionComponent implements OnInit, OnDestroy { public alerta = 'Este registro no puede modificarse, si necesita cambiar una medicación prescripta puede suspender desde la HUDS y registrar una nueva.'; - private soloValores = ['33633005']; // prescripción de medicamento + private soloValores = []; // prescripción de medicamento constructor( public servicioPrestacion: PrestacionesService, @@ -124,6 +126,8 @@ export class PrestacionEjecucionComponent implements OnInit, OnDestroy { public constantesService: ConstantesService, public recetaService: RecetaService, private turnoService: TurnoService, + public eclqueriesServicies: ECLQueriesService, + public snomedService: SnomedService ) { } /** @@ -145,6 +149,21 @@ export class PrestacionEjecucionComponent implements OnInit, OnDestroy { } }); + this.eclqueriesServicies.search({ key: 'prestacion:registroNoModificable' }).pipe( + switchMap(query => { + if (query && query.length > 0) { + const snomedQuery: any = { + expression: query[0].valor, + search: '' + }; + return this.snomedService.get(snomedQuery); + } + return of([]); + }) + ).subscribe((resultado: any[]) => { + this.soloValores = resultado.map(item => item.conceptId); + }); + this.huds.registrosHUDS.subscribe((datos) => { if (this.registrosHUDS.length < datos.length) { this.activeIndex = datos.length + 2; @@ -1007,6 +1026,22 @@ export class PrestacionEjecucionComponent implements OnInit, OnDestroy { return false; } + // Comparar fechas de validación con fecha de registro + const validaciones = this.prestacion?.estados?.filter(e => e.tipo === 'validada') || []; + if (validaciones.length > 0) { + const ultimaValidacion = validaciones[validaciones.length - 1]; + if (!registro.createdAt) { + // Es un registro nuevo sin guardar, se puede editar + return false; + } else if (new Date(registro.createdAt) > new Date(ultimaValidacion.createdAt)) { + // El registro fue creado después de la última validación, por lo tanto se puede editar + return false; + } else { + // Es un registro anterior a la validación rota, por lo que NO puede editarse + return true; + } + } + const valido = this.ejecucionService.validarConcepto(registro.concepto); return !valido; diff --git a/src/app/modules/rup/interfaces/prestacion.estado.interface.ts b/src/app/modules/rup/interfaces/prestacion.estado.interface.ts index 24c03b7d09..0914f8c4b4 100644 --- a/src/app/modules/rup/interfaces/prestacion.estado.interface.ts +++ b/src/app/modules/rup/interfaces/prestacion.estado.interface.ts @@ -2,6 +2,7 @@ export interface IPrestacionEstado { id: string; tipo: string; idOrigenModifica: string; + createdAt?: Date; createdBy: { id: string; nombre: string;