Skip to content

Commit 0266728

Browse files
aldoEMatamalaMCele
authored andcommitted
feat(REC-138):ANDES: Mejoras en la suspencion de recetas
1 parent 527300d commit 0266728

File tree

3 files changed

+15
-27
lines changed

3 files changed

+15
-27
lines changed

modules/recetas/receta-schema.ts

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

modules/recetas/recetas.routes.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,13 @@ 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) {
5454
case 'suspender':
55-
result = await suspender(recetas, req);
55+
result = await suspender(recetaId, req);
5656
break;
5757
case 'dispensar':
5858
case 'dispensa-parcial':

modules/recetas/recetasController.ts

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -228,23 +228,18 @@ export async function obtenerRecetasPorGrupo(recetaIds) {
228228
}
229229
}
230230

231-
export async function suspender(recetas, req) {
231+
export async function suspender(recetaId, req) {
232232
const motivo = req.body.motivo;
233233
const observacion = req.body.observacion;
234234
const profesional = req.body.profesional;
235235
try {
236-
if (!recetas) {
237-
throw new ParamsIncorrect();
238-
}
239-
const recetasASuspender = await obtenerRecetasPorGrupo(recetas);
240-
const promises = recetas.map(async (recetaId) => {
241-
242-
const receta: any = await Receta.findById(recetaId);
243-
244-
if (!receta) {
245-
throw new RecetaNotFound();
246-
}
247-
if (!receta.medicamento.tratamientoProlongado) {
236+
const recetaR: any = await Receta.findById(recetaId);
237+
const recetasASuspender = await Receta.find( {
238+
'medicamento.concepto.conceptId': recetaR.medicamento.concepto.conceptId,
239+
idRegistro: recetaR.idRegistro
240+
});
241+
const promises = recetasASuspender.map(async (receta: any) => {
242+
if ((receta.estadoActual.tipo === 'vigente') || (receta.estadoDispensaActual.tipo === 'dispensa-parcial' && receta.estadoActual.tipo === 'pendiente')) {
248243
receta.estados.push({
249244
tipo: 'suspendida',
250245
motivo,
@@ -254,32 +249,25 @@ export async function suspender(recetas, req) {
254249
});
255250
Auth.audit(receta, req);
256251
await receta.save();
257-
258-
const idRegistro = receta.idRegistro;
259-
const medicamento = receta.medicamento?.concepto.conceptId;
260-
await Receta.deleteMany({ idRegistro, 'medicamento.concepto.conceptId': medicamento, 'estadoActual.tipo': 'pendiente', 'estadoDispensaActual.tipo': 'sin-dispensa' });
261252
} else {
262-
if (recetasASuspender.some(r => r.id.toString() === receta.id.toString())) {
253+
if (receta.estadoDispensaActual.tipo === 'sin-dispensa' && receta.estadoActual.tipo === 'pendiente') {
263254
receta.estados.push({
264-
tipo: 'suspendida',
255+
tipo: 'eliminada',
265256
motivo,
266257
observacion,
267258
profesional,
268259
fecha: new Date()
269260
});
270261
Auth.audit(receta, req);
271262
await receta.save();
272-
} else {
273-
const _id = receta.id;
274-
const medicamento = receta.medicamento?.concepto.conceptId;
275-
await Receta.deleteOne({ _id });
276263
}
277264
}
278265
});
279266
await Promise.all(promises);
267+
280268
return { success: true };
281269
} catch (error) {
282-
await updateLog.error('suspender', { motivo, observacion, profesional, recetas }, error);
270+
await updateLog.error('suspender', { motivo, observacion, profesional, recetaId }, error);
283271
return error;
284272
}
285273
}

0 commit comments

Comments
 (0)