diff --git a/initialize.ts b/initialize.ts index 63bd7a141a..faccc07a22 100644 --- a/initialize.ts +++ b/initialize.ts @@ -22,6 +22,10 @@ export function initAPI(app: Express) { const { Connections } = require('./connections'); Connections.initialize(); + // Crea/actualiza motivos de acceso a HUDS por defecto + const { setUpMotivosHuds } = require('./modules/huds/motivosHuds'); + setUpMotivosHuds(); + // Inicializa la autenticación con Passport/JWT Auth.initialize(app); diff --git a/modules/huds/hudsAccesos.controller.ts b/modules/huds/hudsAccesos.controller.ts index de706daa2d..36fd76adce 100644 --- a/modules/huds/hudsAccesos.controller.ts +++ b/modules/huds/hudsAccesos.controller.ts @@ -91,6 +91,7 @@ export async function search(filtros) { motivoAcceso: '$accesos.motivoAcceso', organizacion: '$accesos.organizacion', detalleMotivo: '$accesos.detalleMotivo', + datosAcceso: '$accesos.datosAcceso', labelPaciente: { $ifNull: [ '$accesos.labelPaciente', diff --git a/modules/huds/hudsAccesos.routes.ts b/modules/huds/hudsAccesos.routes.ts index 59f153f00a..092d2b9c37 100644 --- a/modules/huds/hudsAccesos.routes.ts +++ b/modules/huds/hudsAccesos.routes.ts @@ -30,7 +30,7 @@ router.post('/accesos/token', asyncHandler(async (req: any, res) => { const datosProfesional: any = await search({ id: idProfesional }, { matricula: 1 }); matricula = (datosProfesional.length && datosProfesional[0].matricula && datosProfesional[0].matricula.length) ? datosProfesional[0].matricula[0] : null; } - logAcceso(req, req.body.paciente.id, matricula, req.body.motivo, req.body.idTurno, req.body.idPrestacion, req.body.detalleMotivo, req.body.modulo); + logAcceso(req, req.body.paciente.id, matricula, req.body.motivo, req.body.idTurno, req.body.idPrestacion, req.body.detalleMotivo, req.body.modulo, req.body.datosAcceso); return res.json({ token: Auth.generateHudsToken(req.body.usuario, organizacionId, req.body.paciente) }); })); diff --git a/modules/huds/hudsAccesos.schema.ts b/modules/huds/hudsAccesos.schema.ts index 5904a59a04..b36d270ac8 100644 --- a/modules/huds/hudsAccesos.schema.ts +++ b/modules/huds/hudsAccesos.schema.ts @@ -22,6 +22,7 @@ export const HudsAccesoSchema = new Schema({ matricula: String, motivoAcceso: String, detalleMotivo: String, + datosAcceso: SchemaTypes.Mixed, labelPaciente: String, modulo: String, turno: SchemaTypes.ObjectId, @@ -57,6 +58,7 @@ export interface IHudsAccesos extends Document { matricula: string; motivoAcceso: string; detalleMotivo: string; + datosAcceso: any; modulo: string; turno: Types.ObjectId; prestacion: Types.ObjectId; diff --git a/modules/huds/hudsAccesos.ts b/modules/huds/hudsAccesos.ts index 2a15d891d4..bab4d6e70f 100644 --- a/modules/huds/hudsAccesos.ts +++ b/modules/huds/hudsAccesos.ts @@ -2,12 +2,12 @@ import { HudsAcceso } from './hudsAccesos.schema'; import * as moment from 'moment'; -export async function logAcceso(req, paciente, matricula, motivo, idTurno, idPrestacion, detalleMotivo, modulo) { +export async function logAcceso(req, paciente, matricula, motivo, idTurno, idPrestacion, detalleMotivo, modulo, datosAcceso = null) { let bucketNumber = 0; let retry = true; while (retry) { try { - await execLog(req, paciente, matricula, motivo, idTurno, idPrestacion, bucketNumber, detalleMotivo, modulo); + await execLog(req, paciente, matricula, motivo, idTurno, idPrestacion, bucketNumber, detalleMotivo, modulo, datosAcceso); retry = false; } catch (err) { if (err.code === 17419) { @@ -20,7 +20,7 @@ export async function logAcceso(req, paciente, matricula, motivo, idTurno, idPre } } -async function execLog(req, paciente, matricula, motivoAcceso, turno, prestacion, bucketNumber, detalleMotivo, modulo) { +async function execLog(req, paciente, matricula, motivoAcceso, turno, prestacion, bucketNumber, detalleMotivo, modulo, datosAcceso = null) { const now = new Date(); const start = moment(now).startOf('year') as unknown as number; return HudsAcceso.update( @@ -43,6 +43,7 @@ async function execLog(req, paciente, matricula, motivoAcceso, turno, prestacion matricula, motivoAcceso, detalleMotivo, + datosAcceso, modulo, turno, prestacion, diff --git a/modules/huds/motivosHuds/index.ts b/modules/huds/motivosHuds/index.ts index cebcb46adb..265a4a69a1 100644 --- a/modules/huds/motivosHuds/index.ts +++ b/modules/huds/motivosHuds/index.ts @@ -1 +1,19 @@ +import { MotivosHuds } from './motivosHuds.schema'; + export { MotivosHudsRouter } from './motivosHuds.routes'; + +export async function setUpMotivosHuds() { + await MotivosHuds.updateOne( + { key: 'exportacion-huds' }, + { + $set: { + label: 'Exportación de HUDS', + key: 'exportacion-huds', + moduloDefault: ['exportar-huds'], + descripcion: 'Motivo utilizado por defecto para la exportación de HUDS', + activo: true + } + }, + { upsert: true } + ); +}