@@ -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