diff --git a/modules/insumos/insumos-schema.ts b/modules/insumos/insumos-schema.ts index f8fd5c0532..7e550b7740 100644 --- a/modules/insumos/insumos-schema.ts +++ b/modules/insumos/insumos-schema.ts @@ -1,7 +1,6 @@ import * as mongoose from 'mongoose'; import { AuditPlugin } from '@andes/mongoose-plugin-audit'; - export const insumoSchema = new mongoose.Schema({ nombre: String, codigo: [{ diff --git a/modules/insumos/insumos.routes.ts b/modules/insumos/insumos.routes.ts index 72a6ccb354..c8e88a9bc4 100644 --- a/modules/insumos/insumos.routes.ts +++ b/modules/insumos/insumos.routes.ts @@ -7,9 +7,15 @@ class InsumosResource extends ResourceBase { resourceName = 'insumos'; middlewares = [Auth.authenticate()]; searchFileds = { - nombre: MongoQuery.partialString, - 'codigo.valor': MongoQuery.partialString, - tipo: MongoQuery.equalMatch, + nombre: (value: any) => { + if (value && value.charAt(0) === '^') { + const searchPattern = value.substring(1); + const escaped = searchPattern.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\$&'); + return { $regex: escaped, $options: 'i' }; + } + return value; + }, + tipo: MongoQuery.inArray, estado: MongoQuery.equalMatch, requiereEspecificacion: MongoQuery.equalMatch, }; diff --git a/modules/recetas/recetasInsumos/receta-insumo.events.ts b/modules/recetas/recetasInsumos/receta-insumo.events.ts index 9ed7dfda4e..15b66b5a97 100644 --- a/modules/recetas/recetasInsumos/receta-insumo.events.ts +++ b/modules/recetas/recetasInsumos/receta-insumo.events.ts @@ -38,7 +38,7 @@ EventCore.on('prestacion:recetaInsumo:create', async ({ prestacion, registro }) try { for (const insumo of registro.valor.insumos) { const receta: any = await RecetaInsumo.findOne({ - 'insumo.nombre': insumo.generico.nombre, + 'insumo.id': insumo.generico.id, idRegistro }); if (!receta) { diff --git a/modules/recetas/recetasInsumos/receta-insumo.routes.ts b/modules/recetas/recetasInsumos/receta-insumo.routes.ts index 97282621da..a46377d0db 100644 --- a/modules/recetas/recetasInsumos/receta-insumo.routes.ts +++ b/modules/recetas/recetasInsumos/receta-insumo.routes.ts @@ -6,7 +6,7 @@ import { create } from './recetaInsumosController'; class RecetaInsumoResource extends ResourceBase { Model = RecetaInsumo; - resourceName = 'recetaInsumo'; + resourceName = 'recetaInsumos'; routesEnable = ['get, post']; middlewares = [Auth.authenticate()]; searchFileds = { diff --git a/modules/recetas/recetasInsumos/receta-insumo.schema.ts b/modules/recetas/recetasInsumos/receta-insumo.schema.ts index 81585fda8b..cddb1e33f0 100644 --- a/modules/recetas/recetasInsumos/receta-insumo.schema.ts +++ b/modules/recetas/recetasInsumos/receta-insumo.schema.ts @@ -3,13 +3,24 @@ import * as mongoose from 'mongoose'; import { ProfesionalSubSchema } from '../../../core/tm/schemas/profesional'; import { PacienteSubSchema } from '../../../core-v2/mpi/paciente/paciente.schema'; const insumoSubSchema = new mongoose.Schema({ - insumo: String, + id: String, + nombre: String, + codigo: [ + { + fuente: String, + valor: String + } + ], + tipo: { type: String, enum: ['dispositivo', 'nutricion', 'magistral'] }, - requiereEspecificacion: Boolean, cantidad: Number, + unidades: String, + tratamientoProlongado: Boolean, + tiempoTratamiento: Number, + ordenTratamiento: Number, especificacion: String }, { _id: false }); diff --git a/modules/recetas/recetasInsumos/recetaInsumosController.ts b/modules/recetas/recetasInsumos/recetaInsumosController.ts index c38273fb2b..4874758c39 100644 --- a/modules/recetas/recetasInsumos/recetaInsumosController.ts +++ b/modules/recetas/recetasInsumos/recetaInsumosController.ts @@ -150,7 +150,13 @@ export async function crearRecetaInsumo(dataRecetaInsumo, req) { recetaInsumo.diagnostico = (typeof diag === 'string') ? { descripcion: diag } : diag; if (dataRecetaInsumo.insumo.generico) { recetaInsumo.insumo = { - ...dataRecetaInsumo.insumo.generico, + id: dataRecetaInsumo.insumo.generico.id, + nombre: dataRecetaInsumo.insumo.generico.nombre, + codigo: dataRecetaInsumo.insumo.generico.codigo, + tipo: dataRecetaInsumo.insumo.generico.tipo, + tratamientoProlongado: dataRecetaInsumo.insumo.tratamientoProlongado || false, + tiempoTratamiento: dataRecetaInsumo.insumo.tiempoTratamiento || null, + ordenTratamiento: dataRecetaInsumo.insumo.ordenTratamiento || 0, cantidad: dataRecetaInsumo.insumo.cantidad, especificacion: dataRecetaInsumo.insumo.especificacion };