Skip to content

Commit

Permalink
feat(TYP): listado de prestaciones no nominalizadas
Browse files Browse the repository at this point in the history
  • Loading branch information
ma7payne authored and negro89 committed Feb 14, 2024
1 parent 8ca2add commit af99660
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 17 deletions.
14 changes: 11 additions & 3 deletions modules/estadistica/controller/procesarAgendas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {};
Expand Down Expand Up @@ -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') {
Expand All @@ -79,6 +83,7 @@ export async function procesar(parametros: any) {
};
}
}

const pipelineBuscador = [
{ $match: match },
{ $addFields: { profesionales0: { $arrayElemAt: ['$profesionales', 0] } } },
Expand All @@ -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'
}
},
{
Expand Down Expand Up @@ -195,7 +201,8 @@ export async function procesar(parametros: any) {
' ',
{ $ifNull: ['$turno.paciente.numeroIdentificacion', ''] }, ' ',
]
}
},
organizacion: '$organizacion'
}
},
{
Expand All @@ -208,6 +215,7 @@ export async function procesar(parametros: any) {
$match: matchOS
}
];

const turnosAsignados = await Agenda.aggregate(pipelineBuscador);
return turnosAsignados;
}
39 changes: 27 additions & 12 deletions modules/estadistica/controller/procesarFueraDeAgenda.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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() } }];
}
Expand All @@ -42,7 +45,6 @@ export async function procesar(parametros: any) {
match['solicitud.ambitoOrigen'] = parametros.ambito;
}


try {
const prestaciones = Prestacion.aggregate([
{ $match: match },
Expand All @@ -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,
Expand All @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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);
}

0 comments on commit af99660

Please sign in to comment.