Skip to content

Commit 90a1328

Browse files
committed
feat(REC): implementa ID unico de receta
1 parent 88d906d commit 90a1328

File tree

3 files changed

+53
-2
lines changed

3 files changed

+53
-2
lines changed

modules/descargas/informe-rup/elementos-rup/receta-medica.component.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { HTMLComponent } from '../../model/html-component.class';
22
import { generateBarcodeBase64 } from '../../model/barcode';
3+
import { Receta } from '../../../recetas/receta-schema';
4+
35
export class RecetaMedicaComponent extends HTMLComponent {
46
template = `
57
<div class="nivel-1">
@@ -15,7 +17,7 @@ export class RecetaMedicaComponent extends HTMLComponent {
1517
<td style="width:70%; vertical-align:top; padding:0;border:0px none;">
1618
<div class="barcode">
1719
{{#if esReceta}}
18-
<img src="data:image/png;base64,{{barcodeBase64}}" alt="{{registro.id}}" />
20+
<img src="data:image/png;base64,{{barcodeBase64}}" alt="{{idReceta}}" />
1921
{{/if}}
2022
</div>
2123
</td>
@@ -74,10 +76,26 @@ del Ministerio de Salud de la Nación - RL-2025-24026558-APN-SSVEIYES#MS
7476
}
7577

7678
async process() {
79+
// Buscar receta asociada al registro para obtener idReceta
80+
let idReceta = this.registro.idReceta;
81+
if (!idReceta && this.registro.id) {
82+
try {
83+
const receta: any = await Receta.findOne({ idRegistro: this.registro.id });
84+
if (receta) {
85+
idReceta = receta.idReceta;
86+
}
87+
} catch (error) {
88+
idReceta = null;
89+
}
90+
}
91+
92+
const finalIdReceta = idReceta || this.registro.id;
93+
7794
this.data = {
7895
registro: this.registro,
7996
esReceta: this.depth ? 1 : 0, // Si es 0 no muestra el código de barras
80-
barcodeBase64: await generateBarcodeBase64(this.registro.id, 'code128')
97+
idReceta: finalIdReceta,
98+
barcodeBase64: await generateBarcodeBase64(finalIdReceta, 'code128')
8199
};
82100
}
83101
}

modules/recetas/receta-schema.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,10 @@ const medicamentoSubschema = new mongoose.Schema({
127127
});
128128

129129
export const recetaSchema = new mongoose.Schema({
130+
idReceta: {
131+
type: String,
132+
required: false
133+
},
130134
organizacion: {
131135
id: mongoose.SchemaTypes.ObjectId,
132136
nombre: String

modules/recetas/recetasController.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,21 @@ import { getReceta } from './services/receta';
1111
import { Paciente } from '../../core-v2/mpi/paciente/paciente.schema';
1212
import { Profesional } from '../../core/tm/schemas/profesional';
1313

14+
// Función para generar ID único basado en fecha
15+
function generarIdDesdeFecha(fecha = new Date()) {
16+
const pad = (num, size) => num.toString().padStart(size, '0');
17+
18+
return Number(
19+
fecha.getFullYear().toString() +
20+
pad(fecha.getMonth() + 1, 2) +
21+
pad(fecha.getDate(), 2) +
22+
pad(fecha.getHours(), 2) +
23+
pad(fecha.getMinutes(), 2) +
24+
pad(fecha.getSeconds(), 2) +
25+
pad(fecha.getMilliseconds(), 3)
26+
);
27+
}
28+
1429

1530
async function registrarAppNotificadas(req, recetas, sistema) {
1631
const pacienteId = recetas[0].paciente.id;
@@ -111,6 +126,19 @@ export async function buscarRecetas(req) {
111126
if (!recetas.length) {
112127
return [];
113128
}
129+
130+
// Generar idAndes para recetas que no lo tengan
131+
const recetasActualizadas = [];
132+
for (const receta of recetas) {
133+
if (!receta.idReceta) {
134+
receta.idReceta = generarIdDesdeFecha(receta.fechaRegistro || new Date());
135+
Auth.audit(receta, req);
136+
await receta.save();
137+
}
138+
recetasActualizadas.push(receta);
139+
}
140+
recetas = recetasActualizadas;
141+
114142
const user = req.user;
115143

116144
if (user.type === 'app-token') {
@@ -503,6 +531,7 @@ export async function crearReceta(dataReceta, req) {
503531
for (let i = 0;i < cantRecetas;i++) {
504532
try {
505533
receta = new Receta();
534+
receta.idReceta = generarIdDesdeFecha();
506535
receta.idPrestacion = dataReceta.idPrestacion;
507536
receta.idRegistro = dataReceta.idRegistro;
508537
const diag = medicamento.diagnostico;

0 commit comments

Comments
 (0)