Skip to content

Commit 3817c0d

Browse files
committed
feat(REC-138):ANDES: Mejoras en la suspencion de recetas
1 parent 5b27795 commit 3817c0d

File tree

3 files changed

+69
-35
lines changed

3 files changed

+69
-35
lines changed

modules/recetas/receta-schema.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export const motivosRecetaSchema = new mongoose.Schema({
1818
const estadosSchema = new mongoose.Schema({
1919
tipo: {
2020
type: String,
21-
enum: ['pendiente', 'vigente', 'finalizada', 'vencida', 'suspendida', 'rechazada'],
21+
enum: ['pendiente', 'vigente', 'finalizada', 'vencida', 'suspendida', 'rechazada','eliminada'],
2222
required: true,
2323
default: 'vigente'
2424
},

modules/recetas/recetas.routes.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,16 @@ export const patch = async (req, res) => {
4646
let result, status;
4747
const { recetaId, recetas, dataDispensa } = req.body;
4848
const app = req.user.app?.nombre ? req.user.app.nombre.toLowerCase() : '';
49-
if (!recetaId && !recetas) {
49+
if ((!recetaId && !recetas)) {
5050
const error = new ParamsIncorrect();
5151
res.status(error.status).json(error);
5252
} else {
5353
switch (operacion) {
54-
case 'suspender':
55-
result = await suspender(recetas, req);
54+
// case 'suspender':
55+
// result = await suspender(recetas, req);
56+
// break;
57+
case 'suspender2':
58+
result = await suspender(recetaId, req);
5659
break;
5760
case 'dispensar':
5861
case 'dispensa-parcial':

modules/recetas/recetasController.ts

Lines changed: 62 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -199,23 +199,20 @@ export async function obtenerRecetasPorGrupo(recetaIds) {
199199
}
200200
}
201201

202-
export async function suspender(recetas, req) {
202+
export async function suspender(recetaId, req) {
203203
const motivo = req.body.motivo;
204204
const observacion = req.body.observacion;
205205
const profesional = req.body.profesional;
206+
const recetas=[];
206207
try {
207-
if (!recetas) {
208-
throw new ParamsIncorrect();
209-
}
210-
const recetasASuspender = await obtenerRecetasPorGrupo(recetas);
211-
const promises = recetas.map(async (recetaId) => {
212-
213-
const receta: any = await Receta.findById(recetaId);
214-
215-
if (!receta) {
216-
throw new RecetaNotFound();
217-
}
218-
if (!receta.medicamento.tratamientoProlongado) {
208+
const receta: any = await Receta.findById(recetaId);
209+
const recetasASuspender = await Receta.find( {
210+
'medicamento.concepto.conceptId': receta.medicamento.concepto.conceptId,
211+
idRegistro: receta.idRegistro
212+
});
213+
console.log(recetasASuspender);
214+
const promises = recetasASuspender.map(async (receta: any) => {
215+
if ((receta.estadoActual.tipo == 'vigente') || (receta.estadoDispensaActual.tipo == 'dispensa-parcial' && receta.estadoActual.tipo == 'pendiente')) {
219216
receta.estados.push({
220217
tipo: 'suspendida',
221218
motivo,
@@ -225,29 +222,63 @@ export async function suspender(recetas, req) {
225222
});
226223
Auth.audit(receta, req);
227224
await receta.save();
228-
229-
const idRegistro = receta.idRegistro;
230-
const medicamento = receta.medicamento?.concepto.conceptId;
231-
await Receta.deleteMany({ idRegistro, 'medicamento.concepto.conceptId': medicamento, 'estadoActual.tipo': 'pendiente', 'estadoDispensaActual.tipo': 'sin-dispensa' });
232-
} else {
233-
if (recetasASuspender.some(r => r.id.toString() === receta.id.toString())) {
225+
}else{
226+
if(receta.estadoDispensaActual.tipo === 'sin-dispensa' && receta.estadoActual.tipo === 'pendiente'){
234227
receta.estados.push({
235-
tipo: 'suspendida',
236-
motivo,
237-
observacion,
238-
profesional,
239-
fecha: new Date()
240-
});
241-
Auth.audit(receta, req);
242-
await receta.save();
243-
} else {
244-
const _id = receta.id;
245-
const medicamento = receta.medicamento?.concepto.conceptId;
246-
await Receta.deleteOne({ _id });
228+
tipo: 'eliminada',
229+
motivo,
230+
observacion,
231+
profesional,
232+
fecha: new Date()
233+
});
234+
Auth.audit(receta, req);
235+
await receta.save();
247236
}
248237
}
249238
});
250239
await Promise.all(promises);
240+
// const recetas = recetasASuspender(recetasIdRegistro);
241+
242+
// const promises = recetas.map(async (recetaId) => {
243+
244+
// const receta: any = await Receta.findById(recetaId);
245+
246+
// if (!receta) {
247+
// throw new RecetaNotFound();
248+
// }
249+
// if (!receta.medicamento.tratamientoProlongado) {
250+
// receta.estados.push({
251+
// tipo: 'suspendida',
252+
// motivo,
253+
// observacion,
254+
// profesional,
255+
// fecha: new Date()
256+
// });
257+
// Auth.audit(receta, req);
258+
// await receta.save();
259+
260+
// const idRegistro = receta.idRegistro;
261+
// const medicamento = receta.medicamento?.concepto.conceptId;
262+
// await Receta.deleteMany({ idRegistro, 'medicamento.concepto.conceptId': medicamento, 'estadoActual.tipo': 'pendiente', 'estadoDispensaActual.tipo': 'sin-dispensa' });
263+
// } else {
264+
// if (recetasASuspender.some(r => r.id.toString() === receta.id.toString())) {
265+
// receta.estados.push({
266+
// tipo: 'suspendida',
267+
// motivo,
268+
// observacion,
269+
// profesional,
270+
// fecha: new Date()
271+
// });
272+
// Auth.audit(receta, req);
273+
// await receta.save();
274+
// } else {
275+
// const _id = receta.id;
276+
// const medicamento = receta.medicamento?.concepto.conceptId;
277+
// await Receta.deleteOne({ _id });
278+
// }
279+
// }
280+
// });
281+
// await Promise.all(promises);
251282
return { success: true };
252283
} catch (error) {
253284
await updateLog.error('suspender', { motivo, observacion, profesional, recetas }, error);

0 commit comments

Comments
 (0)