diff --git a/modules/estadistica/controller/procesarAgendas.ts b/modules/estadistica/controller/procesarAgendas.ts index 58dc36b153..8d415a6e2f 100644 --- a/modules/estadistica/controller/procesarAgendas.ts +++ b/modules/estadistica/controller/procesarAgendas.ts @@ -18,7 +18,7 @@ export async function procesar(parametros: any) { 'bloques.turnos': { $ne: null }, - $or: [{ 'bloques.turnos.estado': 'asignado' }, { 'sobreturnos.estado': 'asignado' }] + $or: !parametros.noNominalizada ? [{ 'bloques.turnos.estado': 'asignado' }, { 'sobreturnos.estado': 'asignado' }] : [{}] }; const matchTurno = {}; const matchEstado = {}; @@ -55,6 +55,10 @@ export async function procesar(parametros: any) { matchPaciente['$and'] = [{ datosPaciente: { $regex: parametros.paciente.toUpperCase() } }]; } + if (parametros.noNominalizada) { + match['tipoPrestaciones.noNominalizada'] = true; + } + const matchOS = {}; if (parametros.financiador) { if (parametros.financiador === 'No posee') { @@ -79,6 +83,7 @@ export async function procesar(parametros: any) { }; } } + const pipelineBuscador = [ { $match: match }, { $addFields: { profesionales0: { $arrayElemAt: ['$profesionales', 0] } } }, @@ -103,7 +108,8 @@ export async function procesar(parametros: any) { idBloque: '$bloques._id', turno: '$_bloques.turnos', profesionales0: '$profesionales0.apellido', - profesionales: '$profesionales' + profesionales: '$profesionales', + organizacion: '$organizacion' } }, { @@ -195,7 +201,8 @@ export async function procesar(parametros: any) { ' ', { $ifNull: ['$turno.paciente.numeroIdentificacion', ''] }, ' ', ] - } + }, + organizacion: '$organizacion' } }, { @@ -208,6 +215,7 @@ export async function procesar(parametros: any) { $match: matchOS } ]; + const turnosAsignados = await Agenda.aggregate(pipelineBuscador); return turnosAsignados; } diff --git a/modules/estadistica/controller/procesarFueraDeAgenda.ts b/modules/estadistica/controller/procesarFueraDeAgenda.ts index f209fb4c9c..e1f272a6a6 100644 --- a/modules/estadistica/controller/procesarFueraDeAgenda.ts +++ b/modules/estadistica/controller/procesarFueraDeAgenda.ts @@ -19,6 +19,9 @@ export async function procesar(parametros: any) { }; const matchPaciente = {}; + if (parametros.noNominalizada) { + match['solicitud.tipoPrestacion.noNominalizada'] = { $eq: true }; + } if (parametros.paciente) { matchPaciente['$and'] = [{ datosPaciente: { $regex: parametros.paciente.toUpperCase() } }]; } @@ -42,7 +45,6 @@ export async function procesar(parametros: any) { match['solicitud.ambitoOrigen'] = parametros.ambito; } - try { const prestaciones = Prestacion.aggregate([ { $match: match }, @@ -65,6 +67,8 @@ export async function procesar(parametros: any) { const filtroEstado = parametros.estado ? parametros.estado : 'todos'; await prestaciones.eachAsync(async (prestacion) => { let filtroOS = false; + const registro = prestacion.ejecucion?.registros?.find(x => x.valor?.informe !== null); + const registroConAdjunto = prestacion.ejecucion?.registros?.find(x => x.nombre === 'documento adjunto'); const dtoPrestacion = { fecha: prestacion.ejecucion.fecha, paciente: prestacion.paciente, @@ -77,28 +81,39 @@ export async function procesar(parametros: any) { turno: null, idPrestacion: prestacion._id, estadoFacturacion: prestacion.estadoFacturacion, - ambito: prestacion.solicitud.ambitoOrigen + ambito: prestacion.solicitud?.ambitoOrigen, + organizacion: prestacion.solicitud?.organizacion, + actividad: registro.valor?.informe?.tipoActividad?.term, + tematica: registro.valor?.informe?.tematica, + pacientes: registro.valor?.informe?.pacientes, + documentos: registroConAdjunto?.valor?.documentos, + estadoActual: prestacion.estadoActual }; - if (prestacion.paciente?.obraSocial?.financiador === os || os.includes(prestacion.paciente?.obraSocial?.financiador) || os === 'todos') { - dtoPrestacion['financiador'] = prestacion.paciente.obraSocial; - filtroOS = true; + if (parametros.noNominalizada) { + resultado.push(dtoPrestacion); } else { + const financiador = prestacion.paciente?.obraSocial?.financiador; - if (prestacion?.paciente?.obraSocial?.financiador === os && os === 'SUMAR') { - dtoPrestacion['financiador'] = prestacion.paciente.obraSocial.financiador; + if (financiador === os || os.includes(financiador) || os === 'todos') { + dtoPrestacion['financiador'] = prestacion.paciente.obraSocial; filtroOS = true; } else { - if (prestacion.paciente && !prestacion.paciente.obraSocial && os === 'No posee') { + if (prestacion?.paciente?.obraSocial === 'SUMAR' && os === 'SUMAR') { + dtoPrestacion['financiador'] = prestacion.paciente.obraSocial; filtroOS = true; } else { - filtroOS = false; + if (prestacion.paciente && !prestacion.paciente.obraSocial && os === 'No posee') { + filtroOS = true; + } else { + filtroOS = false; + } } } - } - if (filtroOS === true && (filtroEstado === dtoPrestacion.estado || filtroEstado === 'todos')) { - resultado.push(dtoPrestacion); + if (filtroOS === true && (filtroEstado === dtoPrestacion.estado || filtroEstado === 'todos')) { + resultado.push(dtoPrestacion); + } } }); return resultado; diff --git a/modules/estadistica/controller/turnos_prestacionesController.ts b/modules/estadistica/controller/turnos_prestacionesController.ts index d71568a5f4..542eb7b9b8 100644 --- a/modules/estadistica/controller/turnos_prestacionesController.ts +++ b/modules/estadistica/controller/turnos_prestacionesController.ts @@ -13,8 +13,10 @@ export async function armarListado(datos) { financiador: datos.financiador, estadoFacturacion: datos.estadoFacturacion, paciente: datos.paciente, - ambito: datos.ambito + ambito: datos.ambito, + noNominalizada: datos.noNominalizada, }; + // Procesa los turnos aplicando los filtros const _turnos = parametros?.ambito === 'internacion' ? [] : agendaController.procesar(parametros); // Procesa las prestaciones fuera de agenda @@ -30,6 +32,6 @@ export function obtenerProfesionales(profesionales) { profesionales.forEach(element => { salida += element.apellido + ', ' + element.nombre + ' - '; }); - return salida.slice(0,-3); + return salida.slice(0, -3); }