Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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;
}
Expand Down Expand Up @@ -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<any[]>;
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]) {
Expand All @@ -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();
});
}

Expand Down
7 changes: 3 additions & 4 deletions src/app/modules/rup/components/ejecucion/hudsBusqueda.html
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,7 @@ <h6 class="titulo-filtro {{filtroActual}}">{{ getTitulo(filtroActual) | uppercas
</div>


<ng-container
*ngIf="mostrarBuscador()">
<ng-container *ngIf="mostrarBuscador()">
<div *ngIf="hasRegistrosTotales(filtroActual)" class="mb-2">
<plex-text [(ngModel)]="searchTerm" name="searchTerm" (change)="buscar()" placeholder="Buscar registros..."
[autoFocus]="true">
Expand All @@ -74,8 +73,8 @@ <h6 class="titulo-filtro {{filtroActual}}">{{ getTitulo(filtroActual) | uppercas
<div class="row">
<div class="col-12">
<plex-select [(ngModel)]="tipoPrescripcionSeleccionado" label="Tipo de prescripción"
[data]="tiposPrescripcion" idField="id" labelField="nombre" (change)="filtrarRecetas()"
[readonly]="true">
[data]="tiposPrescripcion" idField="id" labelField="nombre"
(change)="filtrarRecetas()">
</plex-select>
</div>
</div>
Expand Down
8 changes: 6 additions & 2 deletions src/app/modules/rup/components/huds/vistaReceta.html
Original file line number Diff line number Diff line change
Expand Up @@ -62,13 +62,17 @@
</ng-container>

</div>
<div class="data" *ngIf="recetaPrincipal.medicamento.tratamientoProlongado">
<div>
<div class="data" *ngIf="recetaPrincipal.medicamento.tratamientoProlongado || recetaPrincipal.medicamento.esMagistral === true">
<div *ngIf="recetaPrincipal.medicamento.tratamientoProlongado">
<b>Tratamiento Prolongado</b>
<p class="texto-detalle">{{recetaPrincipal.medicamento?.tiempoTratamiento?.nombre}} - orden: {{
recetaPrincipal.medicamento?.ordenTratamiento + 1 }} de
{{recetaPrincipal.medicamento?.tiempoTratamiento?.id}}</p>
</div>
<div *ngIf="recetaPrincipal.medicamento.esMagistral === true">
<b>Es Magistral</b>
<p class="texto-detalle">Sí</p>
</div>
</div>
</div>

Expand Down
Loading