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