diff --git a/src/app/modules/rup/components/ejecucion/hudsBusqueda.component.ts b/src/app/modules/rup/components/ejecucion/hudsBusqueda.component.ts index 991625e2e6..b1a7aacaad 100644 --- a/src/app/modules/rup/components/ejecucion/hudsBusqueda.component.ts +++ b/src/app/modules/rup/components/ejecucion/hudsBusqueda.component.ts @@ -2,8 +2,6 @@ import { Auth } from '@andes/auth'; 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 { LaboratorioService } from 'src/app/services/laboratorio.service'; -import { RecetaService } from 'src/app/services/receta.service'; import { Observable, forkJoin } from 'rxjs'; import { switchMap } from 'rxjs/operators'; import { InternacionResumenHTTP } from 'src/app/apps/rup/mapa-camas/services/resumen-internacion.http'; @@ -12,7 +10,9 @@ import { PacienteService } from 'src/app/core/mpi/services/paciente.service'; import { SECCION_CLASIFICACION } from 'src/app/modules/epidemiologia/constantes'; import { FormsEpidemiologiaService } from 'src/app/modules/epidemiologia/services/ficha-epidemiologia.service'; import { ConceptosTurneablesService } from 'src/app/services/conceptos-turneables.service'; +import { LaboratorioService } from 'src/app/services/laboratorio.service'; import { ProfesionalService } from 'src/app/services/profesional.service'; +import { RecetaService } from 'src/app/services/receta.service'; import { gtag } from '../../../../shared/services/analytics.service'; import { IPrestacion } from '../../interfaces/prestacion.interface'; import { getSemanticClass } from '../../pipes/semantic-class.pipes'; @@ -86,6 +86,7 @@ export class HudsBusquedaComponent implements AfterContentInit, OnInit, OnDestro }); } + public todos: any = []; public solicitudes: any = []; public solicitudesTOP: any = []; @@ -147,6 +148,7 @@ export class HudsBusquedaComponent implements AfterContentInit, OnInit, OnDestro public filtroRecetas; public searchRecetas; public busquedaRecetas; + public busquedaRecetasOriginal; public motivosSuspension; public motivoSuspensionSelector; public seleccionRecetas = []; @@ -243,6 +245,10 @@ export class HudsBusquedaComponent implements AfterContentInit, OnInit, OnDestro this.permisosVac ? 'vacunas' : 'recetas'; this.pacienteSelected = this.paciente; + + if (this.filtroActual === 'recetas') { + this.showFiltros = true; + } } ngOnChanges(changes: SimpleChanges) { @@ -273,11 +279,26 @@ export class HudsBusquedaComponent implements AfterContentInit, OnInit, OnDestro this._onDragEnd.emit(e); } + public tiposPrescripcion = [ + { id: 'medicamento', nombre: 'Medicamento' }, + { id: 'insumo', nombre: 'Dispositivos / Insumos' }, + { id: 'alimentacion', nombre: 'Alimentación' }, + { id: 'magistral', nombre: 'Magistrales' } + ]; + public tipoPrescripcionSeleccionado = this.tiposPrescripcion[0]; + public fechaInicioRecetas; + public fechaFinRecetas; + toogleFiltros() { this.showFiltros = !this.showFiltros; if (!this.showFiltros) { this.fechaInicio = this.fechaFin = this.prestacionSeleccionada = null; + this.fechaInicioRecetas = this.fechaFinRecetas = null; + this.tipoPrescripcionSeleccionado = this.tiposPrescripcion[0]; this.filtrar(); + if (this.filtroActual === 'recetas') { + this.filtrarRecetas(); + } } } @@ -756,7 +777,7 @@ export class HudsBusquedaComponent implements AfterContentInit, OnInit, OnDestro case 'solicitudes': return this.solicitudesMezcladas.length; case 'recetas': - return this.busquedaRecetas?.length; + return this.busquedaRecetasOriginal?.length; case 'registro': return this.registrosTotalesCopia.registro.length; } @@ -768,6 +789,9 @@ export class HudsBusquedaComponent implements AfterContentInit, OnInit, OnDestro if (key === 'planes') { this.setAmbitoOrigen('ambulatorio'); } + if (key === 'recetas') { + this.showFiltros = true; + } } mostrarItem(item) { @@ -945,12 +969,12 @@ export class HudsBusquedaComponent implements AfterContentInit, OnInit, OnDestro filtrarRecetas() { const searchTerm = this.searchRecetas?.toLowerCase() || ''; - if (!searchTerm && !this.filtroRecetas) { - this.groupRecetas(); + if (!searchTerm && !this.filtroRecetas && !this.tipoPrescripcionSeleccionado && !this.fechaInicioRecetas && !this.fechaFinRecetas) { + this.busquedaRecetas = this.busquedaRecetasOriginal; return; } - let filteredRecetas = this.busquedaRecetas; + let filteredRecetas = this.busquedaRecetasOriginal; if (searchTerm) { filteredRecetas = filteredRecetas.filter(group => { @@ -958,9 +982,51 @@ export class HudsBusquedaComponent implements AfterContentInit, OnInit, OnDestro }); } + if (this.fechaInicioRecetas || this.fechaFinRecetas) { + const fechaInicio = this.fechaInicioRecetas ? moment(this.fechaInicioRecetas).startOf('day') : null; + const fechaFin = this.fechaFinRecetas ? moment(this.fechaFinRecetas).endOf('day') : null; + + filteredRecetas = filteredRecetas.filter(group => { + const fecha = moment(group.recetaVisible.fechaRegistro); + if (fechaInicio && fecha.isBefore(fechaInicio)) { + return false; + } + if (fechaFin && fecha.isAfter(fechaFin)) { + return false; + } + return true; + }); + } + + if (this.tipoPrescripcionSeleccionado) { + const tipo = this.tipoPrescripcionSeleccionado.id; + filteredRecetas = filteredRecetas.filter(group => { + const medicamento = group.recetaVisible.medicamento; + const concept = medicamento.concepto; + const semanticTag = concept.semanticTag; + const term = concept.term.toLowerCase(); + + switch (tipo) { + case 'medicamento': + return true; + case 'insumo': + return (semanticTag === 'objeto físico' || semanticTag === 'producto') && !term.includes('alimentacion') && !term.includes('fórmula'); + 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; + } + }); + } + if (this.filtroRecetas) { filteredRecetas = filteredRecetas.reduce((acc, receta) => { const vigenteRecetas = receta.recetas.filter(r => r.estadoActual.tipo === 'vigente'); + if (vigenteRecetas.length > 0) { acc.push({ conceptId: receta.conceptId, @@ -1005,6 +1071,7 @@ export class HudsBusquedaComponent implements AfterContentInit, OnInit, OnDestro })) ); + this.busquedaRecetasOriginal = this.busquedaRecetas; }); } @@ -1103,4 +1170,20 @@ export class HudsBusquedaComponent implements AfterContentInit, OnInit, OnDestro return 'info'; } } + + checkDispensaAnticipada(receta) { + if (receta.estadoDispensaActual && receta.estadoDispensaActual.fecha) { + const fechaDispensa = moment(receta.estadoDispensaActual.fecha); + const fechaRegistro = moment(receta.fechaRegistro); + + if (fechaDispensa.isBefore(fechaRegistro)) { + if (receta.estadoActual.tipo === 'finalizada') { + return 'dispensa anticipada'; + } else if (receta.estadoActual.tipo === 'pendiente') { + return 'dispensa parcial anticipada'; + } + } + } + return null; + } } diff --git a/src/app/modules/rup/components/ejecucion/hudsBusqueda.html b/src/app/modules/rup/components/ejecucion/hudsBusqueda.html index 4d97df6385..4ba285ff96 100644 --- a/src/app/modules/rup/components/ejecucion/hudsBusqueda.html +++ b/src/app/modules/rup/components/ejecucion/hudsBusqueda.html @@ -6,9 +6,9 @@
+ (click)="filtroBuscador(filtro.key)">
+ [ngClass]="{'active': filtroActual === filtro.key}">
{{getCantidadResultados(filtro.key)}} @@ -26,26 +26,25 @@
{{ getTitulo(filtroActual) | uppercas
+ [autodisabled]="true" (click)="refreshLaboratorios(token)"> + tooltip="Buscar nuevos registros" [disabled]="disabledBtnCDA" (click)="regenerarCDA()">
- - -
-
- +
+ -
+
+ + + [title]="showFiltros ? 'Cerrar filtros' : 'Ver filtros'" class="float-right" tooltipPosition="left" + (click)="toogleFiltros()">
@@ -53,46 +52,68 @@
{{ getTitulo(filtroActual) | uppercas + *ngIf="filtroActual !== 'solicitudes' && filtroActual !== 'planes' && filtroActual !== 'laboratorios' && filtroActual !== 'vacunas' && filtroActual !== 'dominios'">
+ [autoFocus]="true">
+ label="{{filtroTrastornos ? 'Activos' : 'Todos'}}">
+ +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+ placeholder="Buscar recetas..." [autoFocus]="true">
  • + [ngModel]="seleccionRecetas[iReceta]" name="seleccionada" type="checkbox" + (change)="seleccionarReceta($event, grupo.recetas, iReceta)">
    + *ngIf="grupo.recetaVisible?.medicamento?.tratamientoProlongado"> {{ textoTratamientoProlongado(grupo) }}
    + [ngClass]="{'active': huds.isOpen(grupo, 'receta')}" + (click)="emitTabs(grupo, 'receta', iReceta)">
    + [ngClass]="{'active': huds.isOpen(grupo, 'receta')}">
    @@ -124,12 +145,12 @@
    {{ getTitulo(filtroActual) | uppercas
    + [type]="estadoReceta[grupo.recetaVisible?.estadoActual.tipo]"> {{ grupo.recetaVisible?.estadoActual?.tipo.replace('-', ' ') }} + [type]="estadoDispensa[grupo.recetaVisible?.estadoDispensaActual.tipo]"> {{ grupo.recetaVisible?.estadoDispensaActual?.tipo.replace('-', ' ') @@ -152,7 +173,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + titulo="No hay recetas registradas">
    @@ -167,11 +188,11 @@
    {{ getTitulo(filtroActual) | uppercas
  • + [ngClass]="{'active': huds.isOpen(registro, 'solicitud') || huds.isOpen(registro, 'concepto'), 'solicitud': true}" + (click)="clickSolicitud(registro, iPrestacion)">
    + [ngClass]="{'active': huds.isOpen(registro, 'solicitud') || huds.isOpen(registro, 'concepto'), 'rup-border-plan': true}">
    @@ -213,16 +234,15 @@
    {{ getTitulo(filtroActual) | uppercas
    + [type]="estadoRegistro(registro.estadoActual?.tipo)"> {{ registro.estadoActual.tipo }} + icon="information-outline" title="Registrado por profesional" + titlePosition="left"> + icon="information-outline" title="Registrado por gestión" + titlePosition="left">
    @@ -238,7 +258,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + titulo="No hay solicitudes registradas">
    @@ -250,11 +270,11 @@
    {{ getTitulo(filtroActual) | uppercas
  • + [ngClass]="{'active': huds.isOpen(registro, 'concepto'), 'solicitud': registro.esSolicitud}" + (click)="emitTabs(registro, 'concepto', iConcepto)">
    + [ngClass]="{'active': huds.isOpen(registro, 'concepto'), 'rup-border-plan': registro.esSolicitud}">
    @@ -298,7 +318,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + titulo="No hay hallazgos registrados">
    @@ -310,17 +330,17 @@
    {{ getTitulo(filtroActual) | uppercas
  • + [ngClass]="{'active': huds.isOpen(registro, 'concepto'), 'solicitud': registro.esSolicitud}" + (click)="emitTabs(registro, 'concepto', iConcepto)">
    + [ngClass]="{'active': huds.isOpen(registro, 'concepto'), 'rup-border-plan': registro.esSolicitud}">
    + [dragScope]="'registros-rup'" [dragData]="registro.concepto" + (onDragStart)="dragStart($event)" (onDragEnd)="dragEnd($event)">
    @@ -348,14 +368,14 @@
    {{ getTitulo(filtroActual) | uppercas
    + [type]="registro.evoluciones[0].estado === 'activo' ? 'success' : 'danger'"> {{ registro.evoluciones[0].estado }}
    @@ -371,7 +391,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + titulo="No hay trastornos registrados">
    @@ -383,11 +403,11 @@
    {{ getTitulo(filtroActual) | uppercas
  • + [ngClass]="{'active': huds.isOpen(registro, 'concepto'), 'solicitud': registro.esSolicitud}" + (click)="emitTabs(registro, 'concepto', iConcepto)">
    + [ngClass]="{'active': huds.isOpen(registro, 'concepto'), 'rup-border-registro': registro.esSolicitud}">
    @@ -432,7 +452,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + titulo="No hay elementos de registros cargados">
    @@ -444,17 +464,17 @@
    {{ getTitulo(filtroActual) | uppercas
  • + [ngClass]="{'active': huds.isOpen(registro, 'concepto'), 'solicitud': registro.esSolicitud}" + (click)="emitTabs(registro, 'concepto', iPrestacion)">
    + [ngClass]="{'active': huds.isOpen(registro, 'concepto'), 'rup-border-plan': registro.esSolicitud}">
    + [class.adi-mano-corazon]="registro.esSolicitud">
    {{ registro.concepto.term }} @@ -492,7 +512,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + titulo="No hay procedimientos registrados">
    @@ -504,26 +524,26 @@
    {{ getTitulo(filtroActual) | uppercas
    + idField="conceptId" labelField="term" (change)="filtrar()" [multiple]="true">
    + idField="id" labelField="nombre" (change)="filtrar()">
    + label="Fecha Desde" [debounce]="400">
    + label="Fecha Hasta" [debounce]="400">
    @@ -537,7 +557,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + name="documento">
    Detalle de la internacion
    @@ -555,9 +575,9 @@
    {{ getTitulo(filtroActual) | uppercas
    + class="item-prestacion list-group-item" + [ngClass]="{'activo': huds.someOpen(internacion, iInternacion)}" + (click)="emitTabs(internacion, 'internacion', iInternacion)">
    @@ -565,7 +585,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + size="lg" name="circulo-paciente">

    {{registro.term || 'Evoluciones y otros registros'}}

    @@ -580,7 +600,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + name="documento">
    Prestación fuera de internación
    @@ -596,15 +616,15 @@
    {{ getTitulo(filtroActual) | uppercas
    + class="item-prestacion list-group-item" + [ngClass]="{'activo': huds.someOpen(internacion, iInternacion)}" + (click)="emitTabs(otrasPrestaciones, 'internacion', iInternacion)">
    + class="icon" size="lg" name="mano-gota">
    + class="icon" size="lg" name="pildoras">
    + size="lg" name="circulo-paciente">

    {{indice.term || 'Evoluciones y otros registros'}}

    @@ -617,7 +637,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + titulo="No hay prestaciones registradas">
    @@ -627,11 +647,11 @@
    {{ getTitulo(filtroActual) | uppercas
  • + [ngClass]="{'active': huds.isOpen(prestacion.data, prestacion.tipo)}" + (click)="emitTabs(prestacion, prestacion.tipo, iPrestacion)">
    + [ngClass]="{'active': huds.isOpen(prestacion.data, prestacion.tipo)}">
    @@ -665,7 +685,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + [type]=" prestacion.tipo !== 'ficha-epidemiologica' ? 'success' : 'info'"> {{prestacion.estado}}
    @@ -680,7 +700,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + titulo="No hay prestaciones registradas">
    @@ -694,7 +714,7 @@
    {{ getTitulo(filtroActual) | uppercas
  • + (click)="emitTabs(registro, 'concepto', iCronico)">
    @@ -720,7 +740,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + [type]="registro.evoluciones[registro.evoluciones.length-1].estado === 'activo' ? 'success' : 'danger'"> {{ registro.evoluciones[registro.evoluciones.length-1].estado }} @@ -737,7 +757,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + titulo="No hay productos registrados">
    @@ -753,7 +773,7 @@
    {{ getTitulo(filtroActual) | uppercas
  • + [ngClass]="{'active': huds.isOpen(laboratorio, laboratorio.idProtocolo ? 'laboratorio' : 'cda')}">
    @@ -765,7 +785,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + (click)="emitTabs(laboratorio, laboratorio.idProtocolo ? 'laboratorio' : 'cda', iLaboratorio)">
    {{ @@ -801,7 +821,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + class="text-sm"> Médico solicitante: {{ laboratorio?.medicoSolicitante || laboratorio?.profesional }} @@ -823,7 +843,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + titulo="No hay laboratorios registrados">
    @@ -848,7 +868,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + (click)="emitTabs(unaVacuna, 'cda', iVacuna)"> {{ unaVacuna?.prestacion.term }}
    @@ -890,11 +910,11 @@
    {{ getTitulo(filtroActual) | uppercas
  • + [ngClass]="{'active': huds.isOpen(registro, 'recc'), 'recc': true}" + (click)="clickDerivacion(registro, iDerivacion)">
    + [ngClass]="{'active': huds.isOpen(registro, 'recc') , 'rup-border-recc': true}">
    @@ -915,12 +935,12 @@
    {{ getTitulo(filtroActual) | uppercas
    Profesional: + *ngIf='registro.profesionalSolicitante'> {{ registro.profesionalSolicitante | nombre }} + *ngIf='!registro.profesionalSolicitante'> No existe @@ -941,7 +961,7 @@
    {{ getTitulo(filtroActual) | uppercas
    + titulo="No hay derivaciones registradas">
    diff --git a/src/app/modules/rup/components/huds/vistaReceta.html b/src/app/modules/rup/components/huds/vistaReceta.html index 5d158b1fc1..db3d531fce 100644 --- a/src/app/modules/rup/components/huds/vistaReceta.html +++ b/src/app/modules/rup/components/huds/vistaReceta.html @@ -5,28 +5,33 @@
    + [type]="estadoReceta[recetaPrincipal.estadoActual.tipo]"> {{ recetaPrincipal.estadoActual.tipo.replace('-', ' ') }} + [type]="estadoDispensa[recetaPrincipal.estadoDispensaActual.tipo]"> {{ recetaPrincipal.estadoDispensaActual.tipo.replace('-', ' ') }} + + {{ checkDispensaAnticipada(recetaPrincipal) }} + {{ recetaPrincipal.medicamento.tipoReceta }}
    {{ recetaPrincipal.medicamento.concepto.term }}

    - {{ recetaPrincipal.medicamento.cantEnvases}} envase(s) de {{ recetaPrincipal.medicamento.cantidad}} {{recetaPrincipal.medicamento.presentacion }}(s) + {{ recetaPrincipal.medicamento.cantEnvases}} envase(s) de {{ + recetaPrincipal.medicamento.cantidad}} {{recetaPrincipal.medicamento.presentacion }}(s) -

    +

    {{ '|' +recetaPrincipal.medicamento.dosisDiaria.dias ? recetaPrincipal.medicamento.dosisDiaria.dias + ' día(s)' : '' }} {{ recetaPrincipal.medicamento.dosisDiaria.dosis }} {{ recetaPrincipal.medicamento.presentacion }} cada {{ recetaPrincipal.medicamento.dosisDiaria.intervalo?.nombre }} +

    @@ -67,99 +72,115 @@
    -
    - -
    -
    -
    FECHA
    -
    SISTEMA
    -
    ORGANIZACIÓN
    -
    ESTADO
    -
    + + +
    +
    Historial de medicamento
    + +
    + + + + + + + + {{ receta.fechaRegistro | date:'dd/MM/yyyy HH:mm' }} + + + {{ receta.organizacion.nombre }} + + + {{ receta.profesional.nombre }} {{ receta.profesional.apellido }} + + + {{ receta.diagnostico.term || receta.diagnostico.descripcion }} + + +
    + + {{ receta.estadoActual.tipo }} + + + {{ receta.estadoDispensaActual.tipo.replace('-', ' ') }} + +
    + + + + + + +
    +
    - -
    -
    {{ estadoDispensa.fecha | date: 'dd/MM/yyyy HH:mm' }}
    -
    {{ estadoDispensa.sistema }}
    -
    {{ estadoDispensa.organizacion }}
    -
    {{ estadoDispensa.tipo}}
    -
    - - dispensa duplicada - - - dispensa cancelada {{(estadoDispensa.fechaCancelada | date: 'dd/MM/yyyy HH:mm')}} - -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    - Fecha -

    {{recetaPrincipal.estadoActual.createdAt | date:'dd/MM/yyyy HH:mm'}}

    + +
    +
    Detalle dispensa
    + +
    -
    - Profesional -

    - {{recetaPrincipal.estadoActual.profesional?.apellido}}, - {{recetaPrincipal.estadoActual.profesional?.nombre}}

    -

    - Sin profesional -

    +
    + + + + + + {{ estadoDispensa.fecha | date: 'dd/MM/yyyy HH:mm' }} + + + {{ estadoDispensa.sistema }} + + + {{ estadoDispensa.organizacion }} + + + {{ estadoDispensa.tipo }} + + + + dispensa duplicada + + + dispensa cancelada {{(estadoDispensa.fechaCancelada | date: 'dd/MM/yyyy HH:mm')}} + + + +
    -
    - Motivo -

    {{recetaPrincipal.estadoActual.motivo || '- Sin especificar -'}}

    -
    -
    - Observación -

    {{recetaPrincipal.estadoActual.observacion || "- Sin especificar -"}}

    -
    -
    -
    - -
    - -
    + -
    - - - - - - - - {{ receta.fechaRegistro | date:'dd/MM/yyyy HH:mm' }} - - - {{ receta.organizacion.nombre }} - - - {{ receta.profesional.nombre }} {{ receta.profesional.apellido }} - - - {{ receta.diagnostico.term || receta.diagnostico.descripcion }} - - -
    - - {{ receta.estadoActual.tipo }} - - - {{ receta.estadoDispensaActual.tipo.replace('-', ' ') }} - + +
    +
    Motivo de suspensión
    + + +
    +
    +
    +
    + Fecha +

    {{recetaPrincipal.estadoActual.createdAt | date:'dd/MM/yyyy HH:mm'}}

    - - - -
    -
    \ No newline at end of file +
    + Profesional +

    + {{recetaPrincipal.estadoActual.profesional?.apellido}}, + {{recetaPrincipal.estadoActual.profesional?.nombre}}

    +

    - Sin profesional -

    +
    +
    + Motivo +

    {{recetaPrincipal.estadoActual.motivo || '- Sin especificar -'}}

    +
    +
    + Observación +

    {{recetaPrincipal.estadoActual.observacion || "- Sin especificar -"}}

    +
    +
    +
    + + +
    diff --git a/src/app/modules/rup/components/huds/vistaReceta.scss b/src/app/modules/rup/components/huds/vistaReceta.scss index e6795ae3bc..295b34fec1 100644 --- a/src/app/modules/rup/components/huds/vistaReceta.scss +++ b/src/app/modules/rup/components/huds/vistaReceta.scss @@ -92,6 +92,30 @@ .detalle-dispensa { margin-right: 1; } + + plex-panel.lista-panel { + display: block; + margin-bottom: 0.2rem; + cursor: pointer; + overflow: hidden; + transition: transform 0.2s ease, box-shadow 0.2s ease; + + .titulo { + font-size: 1rem; + color: $recetas; + letter-spacing: 0.5px; + display: flex; + align-items: center; + } + + &[active="true"] { + border-left: 5px solid $recetas; + + .titulo { + font-weight: 700; + } + } + } } .historial-recetas { diff --git a/src/app/modules/rup/components/huds/vistaReceta.ts b/src/app/modules/rup/components/huds/vistaReceta.ts index cc800b467f..008d23fb05 100644 --- a/src/app/modules/rup/components/huds/vistaReceta.ts +++ b/src/app/modules/rup/components/huds/vistaReceta.ts @@ -3,6 +3,7 @@ import { IPaciente } from '../../../../core/mpi/interfaces/IPaciente'; import { HUDSService } from '../../services/huds.service'; import { RecetaService } from 'src/app/services/receta.service'; import { OrganizacionService } from 'src/app/services/organizacion.service'; +import * as moment from 'moment'; @Component({ selector: 'vista-receta', @@ -106,7 +107,7 @@ export class VistaRecetaComponent implements OnInit { ) { } ngOnInit() { - this.recetaPrincipal = this.registro.recetas.length>1?this.recetaService.getRecetaPrincipal(this.registro.recetas): this.registro.recetas[0]; + this.recetaPrincipal = this.registro.recetas.length > 1 ? this.recetaService.getRecetaPrincipal(this.registro.recetas) : this.registro.recetas[0]; this.combinarDispensas(); this.historialRecetas = this.registro.recetas.filter(receta => receta.id !== this.recetaPrincipal.id && receta.fechaRegistro <= this.recetaPrincipal.fechaRegistro && receta.estadoActual?.tipo !== 'eliminada'); } @@ -143,4 +144,19 @@ export class VistaRecetaComponent implements OnInit { return this.listadoDispensas.shift(); } + checkDispensaAnticipada(receta) { + if (receta.estadoDispensaActual && receta.estadoDispensaActual.fecha) { + const fechaDispensa = moment(receta.estadoDispensaActual.fecha); + const fechaRegistro = moment(receta.fechaRegistro); + if (fechaDispensa.isBefore(fechaRegistro)) { + if (receta.estadoActual.tipo === 'finalizada') { + return 'dispensa anticipada'; + } else if (receta.estadoActual.tipo === 'pendiente') { + return 'dispensa parcial anticipada'; + } + } + } + return null; + } + }