diff --git a/modules/descargas/informe-rup/elementos-rup/receta-medica.component.ts b/modules/descargas/informe-rup/elementos-rup/receta-medica.component.ts index 2ff6e6335..8d2fba55a 100644 --- a/modules/descargas/informe-rup/elementos-rup/receta-medica.component.ts +++ b/modules/descargas/informe-rup/elementos-rup/receta-medica.component.ts @@ -2,6 +2,7 @@ import { HTMLComponent } from '../../model/html-component.class'; import { generateBarcodeBase64 } from '../../model/barcode'; import { Receta } from '../../../recetas/receta-schema'; + export class RecetaMedicaComponent extends HTMLComponent { template = `
@@ -22,6 +23,20 @@ export class RecetaMedicaComponent extends HTMLComponent {
+ {{#if estadoReceta}} + + +
+
+ Estado Receta +
+
+ {{ estadoReceta }} +
+
+ + + {{/if}} @@ -78,6 +93,35 @@ del Ministerio de Salud de la Nación - RL-2025-24026558-APN-SSVEIYES#MS async process() { // Buscar receta asociada al registro para obtener idReceta let idReceta = this.registro.idReceta; + let estadoReceta = null; + + const tieneReceta = this.prestacion.ejecucion.registros.some(registro => + registro.concepto?.conceptId === '182836005' || // Prescripción de medicamento + registro.valor?.medicamentos?.length > 0 + ); + + if (tieneReceta) { + try { + const recetas: any[] = await Receta.find({ + idPrestacion: this.prestacion._id.toString(), + idRegistro: this.registro.id, + }).sort({ fechaRegistro: -1 }); + + const recetaPorPrestacion = recetas.find(r => + !['pendiente', 'eliminada'].includes(r.estadoActual?.tipo) + ) || recetas[0]; + + if (recetaPorPrestacion?.estadoActual?.tipo) { + estadoReceta = recetaPorPrestacion.estadoActual.tipo + .split('-') + .map(word => word.charAt(0).toUpperCase() + word.slice(1)) + .join(' '); + } + } catch (error) { + estadoReceta = null; + } + } + if (!idReceta && this.registro.id) { try { const receta: any = await Receta.findOne({ idRegistro: this.registro.id }); @@ -95,6 +139,7 @@ del Ministerio de Salud de la Nación - RL-2025-24026558-APN-SSVEIYES#MS registro: this.registro, esReceta: this.depth ? 1 : 0, // Si es 0 no muestra el código de barras idReceta: finalIdReceta, + estadoReceta, barcodeBase64: await generateBarcodeBase64(finalIdReceta, 'code128') }; } diff --git a/modules/descargas/informe-rup/informe-body.ts b/modules/descargas/informe-rup/informe-body.ts index 59d10b909..e3ea186e5 100644 --- a/modules/descargas/informe-rup/informe-body.ts +++ b/modules/descargas/informe-rup/informe-body.ts @@ -130,5 +130,4 @@ export class InformeRupBody extends HTMLComponent { validada() { return (this.prestacion.estadoActual.tipo === 'validada'); } - }