diff --git a/core-v2/mpi/paciente/paciente.schema.ts b/core-v2/mpi/paciente/paciente.schema.ts index e783b66e1c..81fafe510b 100644 --- a/core-v2/mpi/paciente/paciente.schema.ts +++ b/core-v2/mpi/paciente/paciente.schema.ts @@ -147,6 +147,7 @@ export const PacienteSubSchema: mongoose.Schema = new mongoose.Schema({ nombre: String, apellido: String, documento: String, + cuil: String, fechaNacimiento: Date, sexo: SEXO, genero: String, @@ -165,8 +166,7 @@ export const PacienteSubSchema: mongoose.Schema = new mongoose.Schema({ localidad: NombreSchemaV2, zona: NombreSchemaV2, areaPrograma: NombreSchemaV2, - addAt: Date - + addAt: Date, }, { _id: false }); diff --git a/core-v2/mpi/validacion/validacion.controller.ts b/core-v2/mpi/validacion/validacion.controller.ts index 7a56a5e9c8..32708a7c0c 100644 --- a/core-v2/mpi/validacion/validacion.controller.ts +++ b/core-v2/mpi/validacion/validacion.controller.ts @@ -23,7 +23,7 @@ function identidadSinAcentos(ciudadano) { * Busca en fuentes auntenticas los datos de un ciudadano. */ -function generarCUIL(dni, sexo) { +export function generarCUIL(dni, sexo) { const sexoNorm = (sexo || '') .toString() .trim() diff --git a/modules/recetas/receta-schema.ts b/modules/recetas/receta-schema.ts index fcb699d537..33adfa6cee 100644 --- a/modules/recetas/receta-schema.ts +++ b/modules/recetas/receta-schema.ts @@ -19,7 +19,7 @@ export const motivosRecetaSchema = new mongoose.Schema({ const estadosSchema = new mongoose.Schema({ tipo: { type: String, - enum: ['pendiente', 'vigente', 'finalizada', 'vencida', 'suspendida', 'rechazada','eliminada'], + enum: ['pendiente', 'vigente', 'finalizada', 'vencida', 'suspendida', 'rechazada', 'eliminada'], required: true, default: 'vigente' }, @@ -134,7 +134,8 @@ export const recetaSchema = new mongoose.Schema({ }, organizacion: { id: mongoose.SchemaTypes.ObjectId, - nombre: String + nombre: String, + direccion: { type: String, required: false }, }, profesional: { type: profesionalSubschema, diff --git a/modules/recetas/recetasController.ts b/modules/recetas/recetasController.ts index f6f61df783..858b786167 100644 --- a/modules/recetas/recetasController.ts +++ b/modules/recetas/recetasController.ts @@ -585,7 +585,8 @@ export async function create(req) { documento: profAndes.documento, profesion: profesionGrado, especialidad: especialidades, - matricula: matriculaGrado + matricula: matriculaGrado, + efector: profRecetar.efector || null }; } return await crearReceta(dataReceta, req); diff --git a/modules/rup/controllers/rup.events.ts b/modules/rup/controllers/rup.events.ts index dd1e987638..1d2bcc2590 100644 --- a/modules/rup/controllers/rup.events.ts +++ b/modules/rup/controllers/rup.events.ts @@ -4,12 +4,17 @@ import * as moment from 'moment'; import { Receta } from '../../recetas/receta-schema'; import { rupEventsLog as logger } from './rup.events.log'; import { Profesional } from '../../../core/tm/schemas/profesional'; +import { generarCUIL } from '../../../core-v2/mpi/validacion/validacion.controller'; EventCore.on('prestacion:receta:create', async ({ prestacion, registro }) => { try { const idRegistro = registro._id; const documentoProfesional = prestacion.estadoActual.createdBy?.documento ? prestacion.estadoActual.createdBy?.documento : prestacion.solicitud.profesional.documento; const profPrestacion = await Profesional.findOne({ documento: documentoProfesional }); + if (!profPrestacion) { + logger.error('prestacion:receta:create', prestacion, `No se encontrĂ³ el profesional con documento ${documentoProfesional}`); + return; + } const { profesionGrado, matriculaGrado, especialidades } = await getProfesionActualizada(profPrestacion); const profesional = { @@ -27,6 +32,8 @@ EventCore.on('prestacion:receta:create', async ({ prestacion, registro }) => { nombre: prestacion.ejecucion.organizacion.nombre }; + const pacienteCUIL = prestacion.paciente.cuil || generarCUIL(prestacion.paciente.documento, prestacion.paciente.sexo); + const dataReceta = { idPrestacion: prestacion.id, idRegistro, @@ -38,6 +45,9 @@ EventCore.on('prestacion:receta:create', async ({ prestacion, registro }) => { medicamento: null, diagnostico: null, }; + + dataReceta.paciente.cuil = pacienteCUIL; + for (const medicamento of registro.valor.medicamentos) { const receta: any = await Receta.findOne({ 'medicamento.concepto.conceptId': medicamento.generico.conceptId,