Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion modules/recetas/receta-schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export const motivosRecetaSchema = new mongoose.Schema({
const estadosSchema = new mongoose.Schema({
tipo: {
type: String,
enum: ['pendiente', 'vigente', 'finalizada', 'vencida', 'suspendida', 'rechazada'],
enum: ['pendiente', 'vigente', 'finalizada', 'vencida', 'suspendida', 'rechazada','eliminada'],
required: true,
default: 'vigente'
},
Expand Down
4 changes: 2 additions & 2 deletions modules/recetas/recetas.routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,13 @@ export const patch = async (req, res) => {
let result, status;
const { recetaId, recetas, dataDispensa } = req.body;
const app = req.user.app?.nombre ? req.user.app.nombre.toLowerCase() : '';
if (!recetaId && !recetas) {
if ((!recetaId && !recetas)) {
const error = new ParamsIncorrect();
res.status(error.status).json(error);
} else {
switch (operacion) {
case 'suspender':
result = await suspender(recetas, req);
result = await suspender(recetaId, req);
break;
case 'dispensar':
case 'dispensa-parcial':
Expand Down
36 changes: 12 additions & 24 deletions modules/recetas/recetasController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -228,23 +228,18 @@ export async function obtenerRecetasPorGrupo(recetaIds) {
}
}

export async function suspender(recetas, req) {
export async function suspender(recetaId, req) {
const motivo = req.body.motivo;
const observacion = req.body.observacion;
const profesional = req.body.profesional;
try {
if (!recetas) {
throw new ParamsIncorrect();
}
const recetasASuspender = await obtenerRecetasPorGrupo(recetas);
const promises = recetas.map(async (recetaId) => {

const receta: any = await Receta.findById(recetaId);

if (!receta) {
throw new RecetaNotFound();
}
if (!receta.medicamento.tratamientoProlongado) {
const recetaR: any = await Receta.findById(recetaId);
const recetasASuspender = await Receta.find( {
'medicamento.concepto.conceptId': recetaR.medicamento.concepto.conceptId,
idRegistro: recetaR.idRegistro
});
const promises = recetasASuspender.map(async (receta: any) => {
if ((receta.estadoActual.tipo === 'vigente') || (receta.estadoDispensaActual.tipo === 'dispensa-parcial' && receta.estadoActual.tipo === 'pendiente')) {
receta.estados.push({
tipo: 'suspendida',
motivo,
Expand All @@ -254,32 +249,25 @@ export async function suspender(recetas, req) {
});
Auth.audit(receta, req);
await receta.save();

const idRegistro = receta.idRegistro;
const medicamento = receta.medicamento?.concepto.conceptId;
await Receta.deleteMany({ idRegistro, 'medicamento.concepto.conceptId': medicamento, 'estadoActual.tipo': 'pendiente', 'estadoDispensaActual.tipo': 'sin-dispensa' });
} else {
if (recetasASuspender.some(r => r.id.toString() === receta.id.toString())) {
if (receta.estadoDispensaActual.tipo === 'sin-dispensa' && receta.estadoActual.tipo === 'pendiente') {
receta.estados.push({
tipo: 'suspendida',
tipo: 'eliminada',
motivo,
observacion,
profesional,
fecha: new Date()
});
Auth.audit(receta, req);
await receta.save();
} else {
const _id = receta.id;
const medicamento = receta.medicamento?.concepto.conceptId;
await Receta.deleteOne({ _id });
}
}
});
await Promise.all(promises);

return { success: true };
} catch (error) {
await updateLog.error('suspender', { motivo, observacion, profesional, recetas }, error);
await updateLog.error('suspender', { motivo, observacion, profesional, recetaId }, error);
return error;
}
}
Expand Down