diff --git a/src/app/modules/rup/components/ejecucion/hudsBusqueda.component.ts b/src/app/modules/rup/components/ejecucion/hudsBusqueda.component.ts index 6580b66154..8e19cdc965 100644 --- a/src/app/modules/rup/components/ejecucion/hudsBusqueda.component.ts +++ b/src/app/modules/rup/components/ejecucion/hudsBusqueda.component.ts @@ -3,7 +3,7 @@ import { Plex } from '@andes/plex'; import { AfterContentInit, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Optional, Output, SimpleChanges, ViewEncapsulation } from '@angular/core'; import * as moment from 'moment'; import { Observable, forkJoin } from 'rxjs'; -import { switchMap } from 'rxjs/operators'; +import { map, switchMap } from 'rxjs/operators'; import { InternacionResumenHTTP } from 'src/app/apps/rup/mapa-camas/services/resumen-internacion.http'; import { IPaciente } from 'src/app/core/mpi/interfaces/IPaciente'; import { PacienteService } from 'src/app/core/mpi/services/paciente.service'; @@ -289,10 +289,10 @@ export class HudsBusquedaComponent implements AfterContentInit, OnInit, OnDestro public tiposPrescripcion = [ { id: 'medicamento', nombre: 'Medicamento' }, { id: 'insumo', nombre: 'Dispositivos / Insumos' }, - { id: 'alimentacion', nombre: 'Alimentación' }, - { id: 'magistral', nombre: 'Magistrales' } + { id: 'alimentacion', nombre: 'Alimentación' } ]; public tipoPrescripcionSeleccionado = this.tiposPrescripcion[0]; + private ultimoTipoCargado = 'medicamento'; public fechaInicioRecetas; public fechaFinRecetas; @@ -1019,6 +1019,13 @@ export class HudsBusquedaComponent implements AfterContentInit, OnInit, OnDestro } filtrarRecetas() { + const tipoActual = this.tipoPrescripcionSeleccionado?.id || 'medicamento'; + if (tipoActual !== this.ultimoTipoCargado) { + this.ultimoTipoCargado = tipoActual; + this.groupRecetas(); + return; + } + const searchTerm = this.searchRecetas?.toLowerCase() || ''; if (!searchTerm && !this.filtroRecetas && !this.tipoPrescripcionSeleccionado && !this.fechaInicioRecetas && !this.fechaFinRecetas) { @@ -1066,9 +1073,6 @@ export class HudsBusquedaComponent implements AfterContentInit, OnInit, OnDestro case 'alimentacion': // Assuming semantic tag is 'producto' but checking term for 'alimentacion' as heuristic return semanticTag === 'producto' && (term.includes('alimentacion') || term.includes('fórmula') || term.includes('leche')); - case 'magistral': - // Check if properties indicate magistral, currently no explicit property known, might be in concept term - return term.includes('magistral'); default: return true; } @@ -1099,13 +1103,44 @@ export class HudsBusquedaComponent implements AfterContentInit, OnInit, OnDestro async groupRecetas() { const estadoDispensa = ['sin-dispensa', 'dispensada', 'dispensa-parcial'].toString(); - const options = { pacienteId: this.paciente.id, estadoDispensa }; + const options: any = { pacienteId: this.paciente.id, estadoDispensa }; this.recetasService.getMotivosSuspension().subscribe((motivos) => { this.motivosSuspension = motivos.map(m => ({ id: m.id, nombre: m.label })); }); - this.recetasService.getRecetas(options).subscribe((data) => { + const tipo = this.tipoPrescripcionSeleccionado?.id || 'medicamento'; + + let request$: Observable; + if (tipo === 'medicamento') { + request$ = this.recetasService.getRecetas(options); + } else { + let tipoInsumo = 'dispositivo'; + if (tipo === 'alimentacion') { + tipoInsumo = 'nutricion'; + } else if (tipo === 'magistral') { + tipoInsumo = 'magistral'; + } + options.tipo = tipoInsumo; + request$ = this.recetasService.getRecetasInsumos(options).pipe( + map((data: any[]) => data.map(receta => ({ + ...receta, + medicamento: { + concepto: { + term: receta.insumo?.nombre || receta.insumo?.concepto?.term || '', + conceptId: receta.insumo?.id || receta.insumo?.concepto?.conceptId || '', + semanticTag: 'producto' + }, + tratamientoProlongado: receta.insumo?.tratamientoProlongado, + tiempoTratamiento: receta.insumo?.tiempoTratamiento, + cantidad: receta.insumo?.cantidad, + ordenTratamiento: receta.insumo?.ordenTratamiento + } + }))) + ); + } + + request$.subscribe((data) => { const grupoRecetas = data.reduce((acc, receta) => { const conceptId = receta.medicamento.concepto.conceptId; if (!acc[conceptId]) { @@ -1120,10 +1155,10 @@ export class HudsBusquedaComponent implements AfterContentInit, OnInit, OnDestro conceptId: key, recetas: grupoRecetas[key], recetaVisible: this.recetaVisible(grupoRecetas[key]) - })) ); this.busquedaRecetasOriginal = this.busquedaRecetas; + this.filtrarRecetas(); }); } diff --git a/src/app/modules/rup/components/ejecucion/hudsBusqueda.html b/src/app/modules/rup/components/ejecucion/hudsBusqueda.html index 5c254fdc4d..062e21725a 100644 --- a/src/app/modules/rup/components/ejecucion/hudsBusqueda.html +++ b/src/app/modules/rup/components/ejecucion/hudsBusqueda.html @@ -53,8 +53,7 @@
{{ getTitulo(filtroActual) | uppercas - +
@@ -74,8 +73,8 @@
{{ getTitulo(filtroActual) | uppercas
+ [data]="tiposPrescripcion" idField="id" labelField="nombre" + (change)="filtrarRecetas()">
diff --git a/src/app/modules/rup/components/huds/vistaReceta.html b/src/app/modules/rup/components/huds/vistaReceta.html index db3d531fce..1514a91b2f 100644 --- a/src/app/modules/rup/components/huds/vistaReceta.html +++ b/src/app/modules/rup/components/huds/vistaReceta.html @@ -62,13 +62,17 @@
-
-
+
+
Tratamiento Prolongado

{{recetaPrincipal.medicamento?.tiempoTratamiento?.nombre}} - orden: {{ recetaPrincipal.medicamento?.ordenTratamiento + 1 }} de {{recetaPrincipal.medicamento?.tiempoTratamiento?.id}}

+
+ Es Magistral +

+