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 @@ -64,8 +64,7 @@ <h4 class="text-capitalize">
</ng-container>
</div>
<div class="actions">
<ng-container
*ngIf="procedimiento.semanticTag === 'procedimiento' || procedimiento.semanticTag === 'régimen/tratamiento'">
<ng-container *ngIf="permiteSolicitud">
<plex-bool type="slide" label="es solicitud"
[(ngModel)]="plantilla.esSolicitud">
</plex-bool>
Expand Down
75 changes: 58 additions & 17 deletions src/app/apps/rup/plantillas-rup/plantillas-rup.component.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
import { Component, OnInit, ViewEncapsulation, OnDestroy } from '@angular/core';
import { Plex } from '@andes/plex';
import { PlantillasService } from '../../../modules/rup/services/plantillas.service';
import { ISnomedConcept } from '../../../modules/rup/interfaces/snomed-concept.interface';
import { SnomedService } from '../../mitos';
import { Unsubscribe } from '@andes/shared';
import { BehaviorSubject, Observable } from 'rxjs';
import { take } from 'rxjs/operators';
import { BehaviorSubject, Observable, Subject } from 'rxjs';
import { take, takeUntil } from 'rxjs/operators';
import { PrestacionesService } from '../../../../app/modules/rup/services/prestaciones.service';
import { Auth } from '@andes/auth';
import { Router } from '@angular/router';
Expand All @@ -19,7 +19,7 @@ import { ElementosRUPService } from 'src/app/modules/rup/services/elementosRUP.s
],
encapsulation: ViewEncapsulation.None
})
export class PlantillasRUPComponent implements OnInit {
export class PlantillasRUPComponent implements OnInit, OnDestroy {

searchTerm: string;
busqueda: string;
Expand All @@ -36,6 +36,7 @@ export class PlantillasRUPComponent implements OnInit {
mostrarDescendientes = false;

public puedeCargarEditarPlantilla = false;
private destroy$ = new Subject<void>();
addItems = [
{
label: 'Plantilla',
Expand Down Expand Up @@ -80,6 +81,11 @@ export class PlantillasRUPComponent implements OnInit {
}]);
}

ngOnDestroy() {
this.destroy$.next();
this.destroy$.complete();
}

redirect(pagina: string) {
this.router.navigate(['./' + pagina]);
return false;
Expand Down Expand Up @@ -125,31 +131,60 @@ export class PlantillasRUPComponent implements OnInit {

@Unsubscribe()
buscarProcedimiento() {
// Validar que no esté vacío
if (!this.searchTerm || !this.searchTerm.trim()) {
this.procedimientos = [];
this.loading = false;
return;
}

// Evitar búsquedas con patrón inválido
if (this.searchTerm.match(/<<\s{1,}/)) {
this.searchTerm = '';
this.procedimientos = [];
this.loading = false;
return;
}

const search = this.searchTerm.trim();
// Evitar búsquedas concurrentes
if (this.loading) {
return;
}

const query = {
search: this.searchTerm,
semanticTag: ['procedimiento', 'elemento de registro', 'régimen/tratamiento', 'situación']
this.loading = true;

const query = {
search: this.searchTerm.trim(),
semanticTag: ['procedimiento', 'elemento de registro', 'régimen/tratamiento', 'situación', 'hallazgo', 'evento']
};


this.snomedService.get(query).subscribe((resultado: ISnomedConcept[]) => {
this.procedimientos = resultado;
});
this.snomedService.get(query)
.pipe(takeUntil(this.destroy$))
.subscribe(
(resultado: ISnomedConcept[]) => {
this.procedimientos = resultado;
this.loading = false;

if (!resultado || resultado.length === 0) {
this.plex.info(
'warning',
`No se encontraron datos para: "${this.searchTerm.trim()}"`,
'Atención'
);
}
},
(error) => {
this.loading = false;
this.procedimientos = [];
this.plex.toast('danger', 'Error al buscar procedimientos', 'Error');
}
);
}


cargarPlantillas(procedimiento) {

cargarPlantillas(procedimiento: any) {
this.procedimiento = procedimiento;
const elementoRUP = this.elementoRupService.buscarElemento(this.procedimiento);
const elementoRUP = this.elementoRupService.buscarElemento(procedimiento);

if (elementoRUP?.params?.habilitarPlantilla === false) {// null o true no ingresa
this.addItems = [
Expand Down Expand Up @@ -207,7 +242,7 @@ export class PlantillasRUPComponent implements OnInit {
return expression.indexOf('<<') === 0;
}

verDescendientes(procedimiento) {
verDescendientes(procedimiento: ISnomedConcept) {
this.snomedService.getQuery({ expression: `<<${procedimiento.conceptId}`, semanticTag: ['procedimiento'] }).subscribe(result => {
this.descendientes = result;

Expand Down Expand Up @@ -246,7 +281,7 @@ export class PlantillasRUPComponent implements OnInit {
}
}

agregarPlantilla(procedimiento, esLink) {
agregarPlantilla(procedimiento: ISnomedConcept | null, esLink: boolean) {
const miOrganizacion = this.auth.organizacion;
const plantilla = {
conceptos: [procedimiento],
Expand All @@ -270,4 +305,10 @@ export class PlantillasRUPComponent implements OnInit {
canDeletePlantilla(): boolean {
return this.procedimiento?.conceptId !== '33633005';
}

get permiteSolicitud(): boolean {
const tagsPermitidos = ['procedimiento', 'régimen/tratamiento', 'situación', 'hallazgo', 'evento'];
return tagsPermitidos.includes(this.procedimiento?.semanticTag);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -525,7 +525,7 @@ export class PrestacionEjecucionComponent implements OnInit, OnDestroy {
const elementoRUP = this.elementosRUPService.buscarElemento(snomedConcept, esSolicitud);
this.elementosRUPService.coleccionRetsetId[String(snomedConcept.conceptId)] = elementoRUP.params;

if (snomedConcept.semanticTag === 'procedimiento' || snomedConcept.semanticTag === 'elemento de registro' || snomedConcept.semanticTag === 'régimen/tratamiento' || snomedConcept.semanticTag === 'situación') {
if (snomedConcept.semanticTag === 'procedimiento' || snomedConcept.semanticTag === 'elemento de registro' || snomedConcept.semanticTag === 'régimen/tratamiento' || snomedConcept.semanticTag === 'situación' || snomedConcept.semanticTag === 'hallazgo' || snomedConcept.semanticTag === 'evento') {
this.ps.get(snomedConcept.conceptId, esSolicitud).subscribe(() => { });
}

Expand Down Expand Up @@ -923,7 +923,7 @@ export class PrestacionEjecucionComponent implements OnInit, OnDestroy {

checkPlantilla(registro) {

const checkSemtag = registro.concepto.semanticTag === 'procedimiento' || registro.concepto.semanticTag === 'elemento de registro' || registro.concepto.semanticTag === 'régimen/tratamiento' || registro.concepto.semanticTag === 'situación';
const checkSemtag = registro.concepto.semanticTag === 'procedimiento' || registro.concepto.semanticTag === 'elemento de registro' || registro.concepto.semanticTag === 'régimen/tratamiento' || registro.concepto.semanticTag === 'situación' || registro.concepto.semanticTag === 'hallazgo' || registro.concepto.semanticTag === 'evento';

return checkSemtag;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ export class ElementoDeRegistroComponent extends RUPComponent implements OnInit,
nuevoRegistro.relacionadoCon = relaciones;
}

if (snomedConcept.semanticTag === 'procedimiento' || snomedConcept.semanticTag === 'elemento de registro' || snomedConcept.semanticTag === 'régimen/tratamiento' || snomedConcept.semanticTag === 'situación') {
if (snomedConcept.semanticTag === 'procedimiento' || snomedConcept.semanticTag === 'elemento de registro' || snomedConcept.semanticTag === 'régimen/tratamiento' || snomedConcept.semanticTag === 'situación' || snomedConcept.semanticTag === 'hallazgo' || snomedConcept.semanticTag === 'evento') {
this.plantillasService.get(snomedConcept.conceptId, esSolicitud).subscribe(() => { });
}
this.registro.registros.push(nuevoRegistro);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ export class SeccionComponent extends RUPComponent implements OnInit, OnDestroy,
nuevoRegistro.relacionadoCon = relaciones;
}

if (snomedConcept.semanticTag === 'procedimiento' || snomedConcept.semanticTag === 'elemento de registro' || snomedConcept.semanticTag === 'régimen/tratamiento' || snomedConcept.semanticTag === 'situación') {
if (snomedConcept.semanticTag === 'procedimiento' || snomedConcept.semanticTag === 'elemento de registro' || snomedConcept.semanticTag === 'régimen/tratamiento' || snomedConcept.semanticTag === 'situación' || snomedConcept.semanticTag === 'hallazgo' || snomedConcept.semanticTag === 'evento') {
this.plantillasService.get(snomedConcept.conceptId, esSolicitud).subscribe(() => { });
}
this.registro.registros.push(nuevoRegistro);
Expand Down Expand Up @@ -390,7 +390,7 @@ export class SeccionComponent extends RUPComponent implements OnInit, OnDestroy,
}

checkPlantilla(registro) {
const checkSemtag = registro.concepto.semanticTag === 'procedimiento' || registro.concepto.semanticTag === 'elemento de registro' || registro.concepto.semanticTag === 'régimen/tratamiento';
const checkSemtag = registro.concepto.semanticTag === 'procedimiento' || registro.concepto.semanticTag === 'elemento de registro' || registro.concepto.semanticTag === 'régimen/tratamiento' || registro.concepto.semanticTag === 'situación' || registro.concepto.semanticTag === 'hallazgo' || registro.concepto.semanticTag === 'evento';
return checkSemtag;
}
}
Loading