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 @@ -42,6 +42,14 @@ export class HudsBusquedaComponent implements AfterContentInit, OnInit, OnDestro
hallazgosNoActivosAux: any;
filtroActual;
filtroTrastornos = true;
public tabIndexLaboratorio = 0;
public filtrosLaboratorio = [
{ key: 0, label: 'Laboratorio' },
{ key: 1, label: 'Microbiología' },
{ key: 2, label: 'CDA' }
];
public filtroTipoMuestra = '';
public filtroPracticaSolicitada = '';
public disabledBtnCDA = false;
public token: string;
public secondsToUpdate = 0;
Expand Down Expand Up @@ -82,6 +90,70 @@ export class HudsBusquedaComponent implements AfterContentInit, OnInit, OnDestro
return this._prestaciones;
}

get laboratoriosFiltrados() {
if (!this.laboratorios) { return []; }

let filtrados = this.laboratorios.filter(lab => {
if (this.tabIndexLaboratorio === 0) {
return lab.TipoServicio === 'LABORATORIO';
} else if (this.tabIndexLaboratorio === 1) {
return lab.TipoServicio === 'MICROBIOLOGIA';
} else if (this.tabIndexLaboratorio === 2) {
return lab.tipo === 'cda';
}
return true;
});

if (this.tabIndexLaboratorio !== 2) {
if (this.tabIndexLaboratorio === 1 && this.filtroTipoMuestra && this.filtroTipoMuestra.length >= 5) {
filtrados = filtrados.filter(lab => lab.tipoMuestra && lab.tipoMuestra.toLowerCase().includes(this.filtroTipoMuestra.toLowerCase()));
}
if (this.filtroPracticaSolicitada && this.filtroPracticaSolicitada.length >= 5) {
filtrados = filtrados.filter(lab => lab.practicasSolicitadas && lab.practicasSolicitadas.toLowerCase().includes(this.filtroPracticaSolicitada.toLowerCase()));
}
}

return filtrados;
}

getMedicoSolicitante(laboratorio: any) {
if (laboratorio?.medicoSolicitante) {
return laboratorio.medicoSolicitante;
}

const prof = laboratorio?.data?.profesional || laboratorio?.profesional;
if (!prof) {
return null;
}

if (typeof prof === 'string') {
if (prof.includes('NO INFORMADO') || prof === '-, ') {
return 'NO INFORMADO';
}
return prof;
}

if (prof.nombre === 'NO INFORMADO' || prof.apellido === 'NO INFORMADO') {
return 'NO INFORMADO';
}

const nombre = prof.nombre || '';
const apellido = prof.apellido || '';
if (nombre && apellido && apellido !== '-') {
return `${apellido}, ${nombre}`;
} else if (nombre) {
return nombre;
} else if (apellido && apellido !== '-') {
return apellido;
}

return null;
}

onChangeTabLaboratorio(index) {
this.tabIndexLaboratorio = index;
}

set prestaciones(value) {
this._prestaciones = value.sort((a, b) => {
return moment(b.fecha).diff(a.fecha);
Expand Down Expand Up @@ -312,6 +384,8 @@ export class HudsBusquedaComponent implements AfterContentInit, OnInit, OnDestro
this.fechaInicio = this.fechaFin = this.prestacionSeleccionada = null;
this.fechaInicioRecetas = this.fechaFinRecetas = null;
this.tipoPrescripcionSeleccionado = this.tiposPrescripcion[0];
this.filtroTipoMuestra = '';
this.filtroPracticaSolicitada = '';
this.filtrar();
if (this.filtroActual === 'recetas') {
this.filtrarRecetas();
Expand Down
175 changes: 113 additions & 62 deletions src/app/modules/rup/components/ejecucion/hudsBusqueda.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,19 @@

<h6 class="titulo-filtro {{filtroActual}}">{{ getTitulo(filtroActual) | uppercase }}</h6>

<div *ngIf="filtroActual === 'laboratorios' || filtroActual === 'guardias'" justify="end">
<div *ngIf="filtroActual === 'laboratorios' || filtroActual === 'guardias'" justify="end"
class="d-flex align-items-center">
<plex-button class="mr-1" icon="refresh" type="primary" size="sm" tooltip="Actualizar listado"
[autodisabled]="true" (click)="refreshLaboratorios(token)">
</plex-button>
<plex-button icon="database-search" type="success" size="sm" tooltipPosition="left"
tooltip="Buscar nuevos registros" [disabled]="disabledBtnCDA" (click)="regenerarCDA()">
</plex-button>
<plex-button *ngIf="filtroActual === 'laboratorios' && tabIndexLaboratorio !== 2" type="info" size="sm"
[icon]="showFiltros ? 'chevron-up' : 'chevron-down'"
[title]="showFiltros ? 'Cerrar filtros' : 'Ver filtros'" class="ml-1" tooltipPosition="left"
(click)="toogleFiltros()">
</plex-button>
</div>

<div class="grow d-flex w-100" *ngIf="filtroActual === 'planes' || filtroActual === 'recetas'">
Expand Down Expand Up @@ -772,78 +778,123 @@ <h6 class="titulo-filtro {{filtroActual}}">{{ getTitulo(filtroActual) | uppercas
<ng-container *ngIf="filtroActual === 'laboratorios'">
<plex-loader *ngIf="disabledBtnCDA" class="sidebar-loader" type="ball-pulse"></plex-loader>

<div *ngIf="laboratorios.length" class="conceptos hover list-unstyled mt-1">
<ng-container *ngIf="laboratorios.length">
<hr class="mt-0">
<plex-options class="mb-2 filtros-ambitos" (activated)="onChangeTabLaboratorio($event)"
[items]="filtrosLaboratorio">
</plex-options>

<ul class="listado list-unstyled" [ngClass]="{ 'opacity-35' : disabledBtnCDA }">
<ng-container *ngFor="let laboratorio of laboratorios; let iLaboratorio = index">
<li>
<div class="rup-card mini laboratorio"
[ngClass]="{'active': huds.isOpen(laboratorio.idProtocolo ? laboratorio : laboratorio.data, laboratorio.idProtocolo ? 'laboratorio' : 'cda')}">
<div class="rup-header">
<div class="rup-border rup-border-laboratorio">
<div class="row p-0 m-0 border-secondary border-left-0">
<div class="col-10 p-0 m-0">
<div class="row m-0 p-0">
<ng-container>
<div class="icon-rup">
<i class="adi adi-recipiente"></i>
</div>
</ng-container>
<div class="col p-0 pl-2 float-left"
(click)="emitTabs(laboratorio, laboratorio.idProtocolo ? 'laboratorio' : 'cda', iLaboratorio)">
<div>
<small>
<span *ngIf="laboratorio?.prestacion?.term">{{
laboratorio?.prestacion?.term}}</span>
<span *ngIf="laboratorio?.idProtocolo">Informe de
laboratorio:
<b> {{laboratorio?.TipoServicio}}</b>
</span>
</small>
</div>
<div class="row p-0 m-0">
<div class="col-10 p-0 m-0">
<div>
<small>Protocolo:
<b>{{laboratorio?.numero}}</b></small>
</div>
<div *ngIf="laboratorio?.documento">
<small>Paciente: <b>{{ laboratorio?.apellido
}}, {{
laboratorio?.nombre }}</b></small>
</div>
<div>
<small>Organización: <b>{{
laboratorio?.data?.organizacion?.nombre ||
laboratorio?.efectorSolicitante
}}</b></small>
</div>
<div *ngIf="laboratorio?.fecha " class="text-xs">
<small>Fecha: <b>{{laboratorio?.fecha
| date:
'dd/MM/yyyy HH:mm'
}}</b></small>
</div>
<ng-container *ngIf="tabIndexLaboratorio !== 2 && showFiltros">
<div class="row mb-2" *ngIf="tabIndexLaboratorio === 1">
<div class="col-12">
<plex-text [(ngModel)]="filtroTipoMuestra" placeholder="Ingrese 5 caracteres o más..."
label="Tipo de muestra">
</plex-text>
</div>
</div>
<div class="row mb-2">
<div class="col-12">
<plex-text [(ngModel)]="filtroPracticaSolicitada"
placeholder="Ingrese 5 caracteres o más..." label="Práctica solicitada">
</plex-text>
</div>
</div>
</ng-container>

<div *ngIf="laboratoriosFiltrados.length" class="conceptos hover list-unstyled mt-1">

<ul class="listado list-unstyled" [ngClass]="{ 'opacity-35' : disabledBtnCDA }">
<ng-container *ngFor="let laboratorio of laboratoriosFiltrados; let iLaboratorio = index">
<li>
<div class="rup-card mini laboratorio"
[ngClass]="{'active': huds.isOpen(laboratorio.idProtocolo ? laboratorio : laboratorio.data, laboratorio.idProtocolo ? 'laboratorio' : 'cda')}">
<div class="rup-header">
<div class="rup-border rup-border-laboratorio">
<div class="row p-0 m-0 border-secondary border-left-0">
<div class="col-10 p-0 m-0">
<div class="row m-0 p-0">
<ng-container>
<div class="icon-rup">
<i class="adi adi-recipiente"></i>
</div>
</ng-container>
<div class="col p-0 pl-2 float-left"
(click)="emitTabs(laboratorio, laboratorio.idProtocolo ? 'laboratorio' : 'cda', iLaboratorio)">

<div *ngIf="laboratorio?.efectorSolicitante || laboratorio?.profesional"
class="text-sm">
<small>Médico solicitante: <b>{{
laboratorio?.medicoSolicitante ||
laboratorio?.profesional }}</b></small>
<div class="row p-0 m-0">
<div class="col-10 p-0 m-0">
<div
*ngIf="tabIndexLaboratorio !== 2 && laboratorio?.numero">
<small>Protocolo:
<b>{{laboratorio?.numero}}</b></small>
</div>
<div *ngIf="tabIndexLaboratorio === 2">
<small>Organización: <b>{{
laboratorio?.data?.organizacion?.nombre
||
laboratorio?.Laboratorio
}}</b></small>
</div>
<div
*ngIf="tabIndexLaboratorio === 1 && laboratorio?.tipoMuestra">
<small>Tipo de Muestra: <b>{{
laboratorio?.tipoMuestra
}}</b></small>
</div>
<div
*ngIf="tabIndexLaboratorio !== 2 && laboratorio?.practicasSolicitadas">
<small>Práctica solicitada: <b>{{
laboratorio?.practicasSolicitadas
}}</b></small>
</div>
<div *ngIf="laboratorio?.fecha" class="text-xs">
<small>Fecha: <b>{{laboratorio?.fecha
| date:
'dd/MM/yyyy HH:mm'
}}</b></small>
</div>
<div *ngIf="tabIndexLaboratorio === 2 && getMedicoSolicitante(laboratorio)"
class="text-sm">
<small>Médico solicitante: <b>{{
getMedicoSolicitante(laboratorio)
}}</b></small>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-2 p-0 m-0"
*ngIf="(laboratorio?.TipoServicio === 'LABORATORIO' || laboratorio?.TipoServicio === 'MICROBIOLOGIA' || laboratorio?.TipoServicio === 'laboratorio' || laboratorio?.TipoServicio === 'microbiologia') && (laboratorio?.estado || laboratorio?.Estado)">
<div class="p-0 pt-1 pr-1 float-right">
<plex-badge size="sm" type="warning"
*ngIf="(laboratorio.estado || laboratorio.Estado) === 'EnProceso' || (laboratorio.estado || laboratorio.Estado) === 'ConResultados'">
{{ (laboratorio.estado || laboratorio.Estado) ===
'EnProceso' ? 'En Proceso' : 'Con resultados' }}
</plex-badge>
<plex-badge size="sm" type="success"
*ngIf="(laboratorio.estado || laboratorio.Estado) === 'Terminado'">
{{ laboratorio.estado || laboratorio.Estado }}
</plex-badge>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</li>
</ng-container>
</ul>
</div>
</li>
</ng-container>
</ul>
</div>
<div *ngIf="!laboratoriosFiltrados.length">
<hr class="mt-0">
<div class="item-lista-vacia">
<plex-label size="sm" justify="center" icon="adi adi-recipiente"
titulo="No hay resultados para esta búsqueda">
</plex-label>
</div>
</div>
</ng-container>
<div *ngIf="!laboratorios.length">
<hr class="mt-0">
<div class="item-lista-vacia">
Expand Down
Loading
Loading