diff --git a/jobs/perinatalFechaFinEmbarazo.ts b/jobs/perinatalFechaFinEmbarazo.ts index c753cdfbb1..b1d378cbb8 100644 --- a/jobs/perinatalFechaFinEmbarazo.ts +++ b/jobs/perinatalFechaFinEmbarazo.ts @@ -1,13 +1,13 @@ import { CarnetPerinatal } from '../modules/perinatal/schemas/carnet-perinatal.schema'; import { CarnetPerinatalCtr } from '../modules/perinatal/carnet-perinatal.routes'; -import { perinatalFechaFinEmbarazoLog } from '../modules/perinatal/perinatal.log'; +import { perinatalLog } from '../modules/perinatal/perinatal.log'; import { getPaciente as getPacienteSP } from '../utils/servicioSipPlus'; import { userScheduler } from '../config.private'; import moment = require('moment'); -const fechaFinEmbLog = perinatalFechaFinEmbarazoLog.startTrace(); +const fechaFinEmbLog = perinatalLog.startTrace(); /** diff --git a/modules/perinatal/controller/carnet-perinatal.events.ts b/modules/perinatal/controller/carnet-perinatal.events.ts index 0b09142e93..ada47e2a38 100644 --- a/modules/perinatal/controller/carnet-perinatal.events.ts +++ b/modules/perinatal/controller/carnet-perinatal.events.ts @@ -3,6 +3,7 @@ import { Types } from 'mongoose'; import { userScheduler } from '../../../config.private'; import { CarnetPerinatalCtr } from './../carnet-perinatal.routes'; import { CarnetPerinatal } from './../schemas/carnet-perinatal.schema'; +import { perinatalLog } from '../perinatal.log'; import { Prestacion } from '../../rup/schemas/prestacion'; import moment = require('moment'); @@ -17,75 +18,85 @@ EventCore.on('perinatal:control:validacion', async ({ prestacion, registro }) => const fechaProximoControl = proximoCtrol(prestacion); const datos = cargarDatos(prestacion); if (carnetExistente) { - if (!carnetExistente.controles) { - carnetExistente.controles = []; + try { + if (!carnetExistente.controles) { + carnetExistente.controles = []; + } + if (moment(carnetExistente.fecha).isAfter(moment(prestacion.ejecucion.fecha).startOf('day').toDate())) { + carnetExistente.fecha = moment(prestacion.ejecucion.fecha).startOf('day').toDate(); + } else { + if (datos.fechaUltimaMenstruacion) { + carnetExistente.fechaUltimaMenstruacion = moment(datos.fechaUltimaMenstruacion.valor).startOf('day').toDate(); + } + if (datos.pesoPrevio) { + carnetExistente.pesoPrevio = datos.pesoPrevio.valor; + } + if (datos.talla) { + carnetExistente.talla = datos.talla.valor; + } + if (datos.fechaProbableDeParto) { + carnetExistente.fechaProbableDeParto = moment(datos.fechaProbableDeParto.valor).startOf('day').toDate(); + } + } + const indexControl = carnetExistente.controles.findIndex(item => String(item.idPrestacion) === String(prestacion.id)); + if (indexControl < 0) { + carnetExistente.controles.push({ + fechaControl: moment(prestacion.ejecucion.fecha).startOf('day').toDate(), + idPrestacion: prestacion.id, + organizacion: prestacion.ejecucion.organizacion, + profesional: prestacion.solicitud.profesional + }); + } + carnetExistente.controles = carnetExistente.controles.sort((a, b) => { + return new Date(a.fechaControl).getTime() - new Date(b.fechaControl).getTime(); + }); + carnetExistente.fechaProximoControl = fechaProximoControl; + carnetExistente.fechaUltimoControl = carnetExistente.controles[carnetExistente.controles.length - 1].fechaControl; + await CarnetPerinatalCtr.update(carnetExistente.id, carnetExistente, userScheduler as any); + } catch (error) { + await perinatalLog.error('control:validacion:existente', carnetExistente, error, userScheduler); } - if (moment(carnetExistente.fecha).isAfter(moment(prestacion.ejecucion.fecha).startOf('day').toDate())) { - carnetExistente.fecha = moment(prestacion.ejecucion.fecha).startOf('day').toDate(); - } else { + + } else { + try { + const carnet: any = { + fecha: moment(prestacion.ejecucion.fecha).startOf('day').toDate(), + paciente: prestacion.paciente, + controles: [ + { + fechaControl: prestacion.ejecucion.fecha, + idPrestacion: prestacion.id, + organizacion: prestacion.ejecucion.organizacion, + profesional: prestacion.solicitud.profesional + }], + fechaUltimoControl: moment(prestacion.ejecucion.fecha).startOf('day').toDate(), + fechaProximoControl, + embarazo, + }; + const registros = prestacion.ejecucion.registros.find(reg => reg.concepto.conceptId === '364323006'); + if (registros) { + carnet['cantidadEmbarazos'] = registros.valor; + } + carnet.primeriza = primeriza; if (datos.fechaUltimaMenstruacion) { - carnetExistente.fechaUltimaMenstruacion = moment(datos.fechaUltimaMenstruacion.valor).startOf('day').toDate(); + carnet.fechaUltimaMenstruacion = moment(datos.fechaUltimaMenstruacion.valor).startOf('day').toDate(); } if (datos.pesoPrevio) { - carnetExistente.pesoPrevio = datos.pesoPrevio.valor; + carnet.pesoPrevio = datos.pesoPrevio.valor; } if (datos.talla) { - carnetExistente.talla = datos.talla.valor; + carnet.talla = datos.talla.valor; } if (datos.fechaProbableDeParto) { - carnetExistente.fechaProbableDeParto = moment(datos.fechaProbableDeParto.valor).startOf('day').toDate(); + carnet.fechaProbableDeParto = moment(datos.fechaProbableDeParto.valor).startOf('day').toDate(); } + await CarnetPerinatalCtr.create(carnet, userScheduler as any); + } catch (error) { + await perinatalLog.error('control:validacion:nuevo', { paciente: prestacion.paciente, embarazo }, error, userScheduler); } - const indexControl = carnetExistente.controles.findIndex(item => String(item.idPrestacion) === String(prestacion.id)); - if (indexControl < 0) { - carnetExistente.controles.push({ - fechaControl: moment(prestacion.ejecucion.fecha).startOf('day').toDate(), - idPrestacion: prestacion.id, - organizacion: prestacion.ejecucion.organizacion, - profesional: prestacion.solicitud.profesional - }); - } - carnetExistente.controles = carnetExistente.controles.sort((a, b) => { - return new Date(a.fechaControl).getTime() - new Date(b.fechaControl).getTime(); - }); - carnetExistente.fechaProximoControl = fechaProximoControl; - carnetExistente.fechaUltimoControl = carnetExistente.controles[carnetExistente.controles.length - 1].fechaControl; - await CarnetPerinatalCtr.update(carnetExistente.id, carnetExistente, userScheduler as any); - - } else { - const carnet: any = { - fecha: moment(prestacion.ejecucion.fecha).startOf('day').toDate(), - paciente: prestacion.paciente, - controles: [ - { - fechaControl: prestacion.ejecucion.fecha, - idPrestacion: prestacion.id, - organizacion: prestacion.ejecucion.organizacion, - profesional: prestacion.solicitud.profesional - }], - fechaUltimoControl: moment(prestacion.ejecucion.fecha).startOf('day').toDate(), - fechaProximoControl, - embarazo, - }; - const registros = prestacion.ejecucion.registros.find(reg => reg.concepto.conceptId === '364323006'); - if (registros) { - carnet['cantidadEmbarazos'] = registros.valor; - } - carnet.primeriza = primeriza; - if (datos.fechaUltimaMenstruacion) { - carnet.fechaUltimaMenstruacion = moment(datos.fechaUltimaMenstruacion.valor).startOf('day').toDate(); - } - if (datos.pesoPrevio) { - carnet.pesoPrevio = datos.pesoPrevio.valor; - } - if (datos.talla) { - carnet.talla = datos.talla.valor; - } - if (datos.fechaProbableDeParto) { - carnet.fechaProbableDeParto = moment(datos.fechaProbableDeParto.valor).startOf('day').toDate(); - } - await CarnetPerinatalCtr.create(carnet, userScheduler as any); } + } else { + await perinatalLog.error('control:validacion:error', { id: prestacion?._id }, { error: 'error en parĂ¡metros' }, userScheduler); } }); diff --git a/modules/perinatal/perinatal.log.ts b/modules/perinatal/perinatal.log.ts index 1edae38e25..18b961f412 100644 --- a/modules/perinatal/perinatal.log.ts +++ b/modules/perinatal/perinatal.log.ts @@ -1,4 +1,4 @@ import { Connections } from '../../connections'; import { Logger } from '@andes/log'; -export const perinatalFechaFinEmbarazoLog = new Logger({ connection: Connections.logs, module: 'perinatal', type: 'perinatal-fechaFinEmbarazo', application: 'andes' }); +export const perinatalLog = new Logger({ connection: Connections.logs, module: 'perinatal', type: 'perinatal-fechaFinEmbarazo', application: 'andes' }); diff --git a/utils/servicioSipPlus.ts b/utils/servicioSipPlus.ts index 6d7105e57d..30aea8d878 100644 --- a/utils/servicioSipPlus.ts +++ b/utils/servicioSipPlus.ts @@ -1,8 +1,8 @@ import { SIP_PLUS, userScheduler } from '../config.private'; -import { perinatalFechaFinEmbarazoLog } from '../modules/perinatal/perinatal.log'; +import { perinatalLog } from '../modules/perinatal/perinatal.log'; import { handleHttpRequest } from './requestHandler'; -const fechaFinEmbarazoLog = perinatalFechaFinEmbarazoLog.startTrace(); +const fechaFinEmbarazoLog = perinatalLog.startTrace(); export async function getPaciente(paciente: any) {