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;
+ }
+ }
+
}