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 2ff6e6335f..c5b22e7a4e 100644 --- a/modules/descargas/informe-rup/elementos-rup/receta-medica.component.ts +++ b/modules/descargas/informe-rup/elementos-rup/receta-medica.component.ts @@ -29,10 +29,10 @@ export class RecetaMedicaComponent extends HTMLComponent { Medicamento - Presentación Cantidad Dosis diaria Diagnóstico + Obra Social @@ -41,9 +41,6 @@ export class RecetaMedicaComponent extends HTMLComponent { {{generico.term}} - {{ unidades }} {{presentacion.term }}(s) - - {{ cantEnvases}} envase(s) de {{ cantidad }} {{presentacion.term }}(s) @@ -58,10 +55,20 @@ export class RecetaMedicaComponent extends HTMLComponent { {{ diagnostico.term }} + + {{#if obraSocial}} + {{obraSocial.nombre}} + {{#if obraSocial.numeroAfiliado}} +
Af. {{obraSocial.numeroAfiliado}} + {{/if}} + {{else}} + - + {{/if}} + {{/each}} - + {{#if esReceta}} Esta receta fue creada por emisor inscripto y valido en el Registro de Recetarios Electrónicos del Ministerio de Salud de la Nación - RL-2025-24026558-APN-SSVEIYES#MS @@ -91,8 +98,40 @@ del Ministerio de Salud de la Nación - RL-2025-24026558-APN-SSVEIYES#MS const finalIdReceta = idReceta || this.registro.id; + let obraSocial = this.prestacion.paciente?.obraSocial || null; + if (Array.isArray(obraSocial)) { + obraSocial = obraSocial[0]; + } + let obraSocialObj = null; + if (obraSocial) { + if (typeof obraSocial === 'string') { + obraSocialObj = { + nombre: obraSocial, + numeroAfiliado: '' + }; + } else { + obraSocialObj = { + nombre: obraSocial.nombre || obraSocial.financiador || '', + numeroAfiliado: obraSocial.numeroAfiliado || '' + }; + } + } + + const registroClone = this.registro.toObject ? this.registro.toObject() : JSON.parse(JSON.stringify(this.registro)); + if (registroClone.valor?.medicamentos) { + registroClone.valor.medicamentos = registroClone.valor.medicamentos.map(med => { + return { + ...med, + obraSocial: med.obraSocial || (obraSocialObj ? { + nombre: obraSocialObj.nombre, + numeroAfiliado: obraSocialObj.numeroAfiliado + } : null) + }; + }); + } + this.data = { - registro: this.registro, + registro: registroClone, esReceta: this.depth ? 1 : 0, // Si es 0 no muestra el código de barras idReceta: finalIdReceta, barcodeBase64: await generateBarcodeBase64(finalIdReceta, 'code128') diff --git a/modules/recetas/receta-schema.ts b/modules/recetas/receta-schema.ts index 33adfa6cee..9eceaf3907 100644 --- a/modules/recetas/receta-schema.ts +++ b/modules/recetas/receta-schema.ts @@ -124,6 +124,10 @@ const medicamentoSubschema = new mongoose.Schema({ numero: { type: Number, required: false + }, + obraSocial: { + type: mongoose.SchemaTypes.Mixed, + required: false } }); diff --git a/modules/recetas/recetasController.ts b/modules/recetas/recetasController.ts index 6e501f7069..0540ca0ed3 100644 --- a/modules/recetas/recetasController.ts +++ b/modules/recetas/recetasController.ts @@ -727,11 +727,14 @@ export async function crearReceta(dataReceta, req) { tipoReceta: medicamento.tipoReceta?.id || medicamento.tipoReceta || 'simple', serie: medicamento.serie, numero: medicamento.numero, + obraSocial: medicamento.obraSocial || dataReceta.paciente?.obraSocial || null }; receta.estados = i < 1 ? [{ tipo: 'vigente' }] : [{ tipo: 'pendiente' }]; receta.estadosDispensa = [{ tipo: 'sin-dispensa', fecha: moment().toDate() }]; - receta.paciente = dataReceta.paciente; - receta.paciente.obraSocial = dataReceta.paciente.obraSocial; + + const pacienteClone = dataReceta.paciente.toObject ? dataReceta.paciente.toObject() : JSON.parse(JSON.stringify(dataReceta.paciente)); + receta.paciente = pacienteClone; + receta.paciente.obraSocial = null; receta.paciente.id = dataReceta.paciente.id || dataReceta.paciente._id; receta.profesional = dataReceta.profesional; receta.profesional._id = dataReceta.profesional.id || dataReceta.profesional._id; // revisar como se generan ids en ambos casos