Skip to content

Commit

Permalink
feat(IN-553): Mejorar consulta para listado medico
Browse files Browse the repository at this point in the history
  • Loading branch information
MarianoCampetella committed Nov 9, 2023
1 parent f9151e2 commit aa0e0dd
Showing 1 changed file with 113 additions and 0 deletions.
113 changes: 113 additions & 0 deletions modules/rup/internacion/resumen/internacion-resumen.routes.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { MongoQuery, ResourceBase } from '@andes/core';
import { Auth } from '../../../../auth/auth.class';
import { IInternacionResumen, IInternacionResumenDoc, InternacionResumen } from './internacion-resumen.schema';
import * as mongoose from 'mongoose';
import moment = require('moment');

class InternacionResumenController extends ResourceBase<IInternacionResumenDoc> {
Model = InternacionResumen;
Expand Down Expand Up @@ -50,6 +52,117 @@ class InternacionResumenController extends ResourceBase<IInternacionResumenDoc>
export const InternacionResumenCtr = new InternacionResumenController({});
export const InternacionResumenRouter = InternacionResumenCtr.makeRoutes();

InternacionResumenRouter.get('/listado-internacion', Auth.authenticate(), async (req, res, next) => {
let pipeline = [];
const match = {};
if (req.query.ingreso) {
const [ingresoDesde, ingresoHasta] = req.query.ingreso.split('|');
match['fechaIngreso'] = {
$gte: moment(ingresoDesde).startOf('day').toDate(),
$lte: moment(ingresoHasta).endOf('day').toDate()
};
}
if (req.query.egreso) {
const [egresoDesde, egresoHasta] = req.query.ingreso.split('|');
match['fechaEgreso'] = {
$gte: moment(egresoDesde).startOf('day').toDate(),
$lte: moment(egresoHasta).endOf('day').toDate()
};
}

match['organizacion.id'] = mongoose.Types.ObjectId(req.query.idOrganizacion);
pipeline = [
{
$match: match
},
{
$lookup: {
from: 'internacionCamaEstados',
localField: '_id',
foreignField: 'estados.idInternacion',
as: 'estadosCama'
}
},
{
$lookup: {
from: 'internacionSalaComunMovimientos',
localField: '_id',
foreignField: 'idInternacion',
as: 'estadosSala'
}
},
{
$addFields: {
estadosSala: {
$cond: {
if: { $gt: [{ $size: '$estadosSala' }, 0] },
then: { $arrayElemAt: ['$estadosSala', -1] },
else: '$$REMOVE'
}
}
}
},
{
$unwind: {
path: '$estadosCama',
preserveNullAndEmptyArrays: true
}
},
{
$addFields: {
estadosCama: { $arrayElemAt: ['$estadosCama.estados', -1] }
}
},
{
$addFields: {
estadosCama: {
$cond: {
if: { $eq: ['$estadosCama', null] },
then: '$$REMOVE',
else: '$estadosCama'
}
}
}
},
{
$match: {
$or: [
{ 'estadosCama.extras.ingreso': true },
{ 'estadosCama.extras.egreso': true },
{ 'estadosSala.extras.ingreso': true },
{ 'estadosSala.extras.egreso': true }
]
}
},
{
$lookup: {
from: 'prestaciones',
localField: 'idPrestacion',
foreignField: '_id',
as: 'idPrestacion'
}
},
{
$unwind: {
path: '$idPrestacion',
preserveNullAndEmptyArrays: true
}
},
{
$addFields: {
idPrestacion: {
$mergeObjects: [
'$idPrestacion',
{ id: '$idPrestacion._id' }
]
}
}
}
];
const listado = await InternacionResumen.aggregate(pipeline);
return res.json(listado);
});


function deepSearch(registros: any[]) {
for (let i = 0; i < registros.length; i++) {
Expand Down

0 comments on commit aa0e0dd

Please sign in to comment.