From da49bc694c8ab4692d11e94bd993cf23085d360c Mon Sep 17 00:00:00 2001 From: AgustinRodriguez-Andes <63318331+agustin1996ra@users.noreply.github.com> Date: Tue, 2 Dec 2025 11:55:01 -0300 Subject: [PATCH] REC-133: PDF: mostrar estado de receta --- modules/descargas/informe-rup/informe-body.ts | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/modules/descargas/informe-rup/informe-body.ts b/modules/descargas/informe-rup/informe-body.ts index 59d10b9090..642f9b50b1 100644 --- a/modules/descargas/informe-rup/informe-body.ts +++ b/modules/descargas/informe-rup/informe-body.ts @@ -2,6 +2,7 @@ import { HTMLComponent } from '../model/html-component.class'; import * as moment from 'moment'; import { registroToHTML } from './utils/registro-to-html'; import { InformeRupFirma } from './informe-firma'; +import { Receta } from '../../recetas/receta-schema'; export class InformeRupBody extends HTMLComponent { template = ` @@ -36,6 +37,16 @@ export class InformeRupBody extends HTMLComponent { {{/if}} + {{#if estadoReceta}} +
+
+ Estado Receta +
+
+ {{ estadoReceta }} +
+
+ {{/if}}
Inicio de Prestación @@ -68,6 +79,7 @@ export class InformeRupBody extends HTMLComponent { const fechaValidacion = this.getFechaEstado('validada'); const fechaPrestacion = this.prestacion.estados.find(estado => { return estado.tipo === 'ejecucion'; }).createdAt; const esValidada = (fechaValidacion !== null); + const estadoReceta = await this.getEstadoReceta(); if (this.registroId) { const registro = this.prestacion.findRegistroById(this.registroId); @@ -95,6 +107,7 @@ export class InformeRupBody extends HTMLComponent { titulo: this.prestacion.solicitud.tipoPrestacion.term, registros, esValidada, + estadoReceta, firmaHTML }; } @@ -131,4 +144,32 @@ export class InformeRupBody extends HTMLComponent { return (this.prestacion.estadoActual.tipo === 'validada'); } + async getEstadoReceta() { + const tieneReceta = this.prestacion.ejecucion.registros.some(registro => + registro.concepto?.conceptId === '182836005' || // Prescripción de medicamento + registro.valor?.medicamentos?.length > 0 + ); + + if (!tieneReceta) { + return null; + } + + try { + const receta: any = await Receta.findOne({ + idPrestacion: this.prestacion._id.toString() + }).sort({ createdAt: -1 }); + + if (receta && receta.estadoActual && receta.estadoActual.tipo) { + return receta.estadoActual.tipo + .split('-') + .map(word => word.charAt(0).toUpperCase() + word.slice(1)) + .join(' '); + } + + return null; + } catch (error) { + return null; + } + } + }