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
11 changes: 11 additions & 0 deletions projects/shared/src/lib/pipes/truncate.pipe.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { Pipe, PipeTransform } from '@angular/core';

@Pipe({ name: 'truncate' })
export class TruncatePipe implements PipeTransform {
transform(value: string): string {
if (value?.length > 20) {
return value.substring(0, 20) + '...';
}
return value;
}
}
7 changes: 5 additions & 2 deletions projects/shared/src/lib/shared.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import { FormsModule } from '@angular/forms';
import { DocumentoPipe } from './pipes/documento.pipe';
import { PacienteRestringidoPipe } from 'src/app/pipes/pacienteRestringido.pipe';
import { CapitalizeFirstPipe } from './pipes/capitalizeFirst.pipe';
import { TruncatePipe } from './pipes/truncate.pipe';

@NgModule({
imports: [
Expand All @@ -42,7 +43,8 @@ import { CapitalizeFirstPipe } from './pipes/capitalizeFirst.pipe';
UploadFileComponent,
NotasComponent,
PacienteRestringidoPipe,
CapitalizeFirstPipe
CapitalizeFirstPipe,
TruncatePipe
],
exports: [
FechaPipe,
Expand All @@ -60,7 +62,8 @@ import { CapitalizeFirstPipe } from './pipes/capitalizeFirst.pipe';
UploadFileComponent,
NotasComponent,
PacienteRestringidoPipe,
CapitalizeFirstPipe
CapitalizeFirstPipe,
TruncatePipe
],
providers: [
PacienteRestringidoPipe
Expand Down
5 changes: 3 additions & 2 deletions src/app/modules/rup/components/core/rup.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ import { IElementoRUP, IElementoRUPRequeridos } from './../../interfaces/element
import { ConceptObserverService } from './../../services/conceptObserver.service';
import { ElementosRUPService } from './../../services/elementosRUP.service';
import { PrestacionesService } from './../../services/prestaciones.service';
import { RecetaService } from 'projects/portal/src/app/services/receta.service';
import { RecetaService } from 'src/app/modules/rup/services/receta.service';
import { ECLQueriesService } from './../../../../services/eclqueries.service';

@Component({
Expand Down Expand Up @@ -160,7 +160,8 @@ export class RUPComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges
public constantesService: ConstantesService,
public recetasService: RecetaService,
@Optional() public ejecucionService: RupEjecucionService,
public eclqueriesServicies: ECLQueriesService
public eclqueriesServicies: ECLQueriesService,
public recetaService: RecetaService
) {
}

Expand Down
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, OnInit, Optional, Output, ViewEncapsulation } from '@angular/core';
import * as moment from 'moment';
import { LaboratorioService } from 'projects/portal/src/app/services/laboratorio.service';
import { RecetaService } from 'projects/portal/src/app/services/receta.service';
import { RecetaService } from 'src/app/modules/rup/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';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import { IPrestacionRegistro } from './../../interfaces/prestacion.registro.inte
import { ConceptObserverService } from './../../services/conceptObserver.service';
import { ElementosRUPService } from './../../services/elementosRUP.service';
import { PrestacionesService } from './../../services/prestaciones.service';
import { RecetaService } from 'projects/portal/src/app/services/receta.service';
import { RecetaService } from 'src/app/modules/rup/services/receta.service';


@Component({
Expand Down Expand Up @@ -515,9 +515,11 @@ export class PrestacionEjecucionComponent implements OnInit, OnDestroy {
return false;
}

const esAsociado = this.prestacion.ejecucion.registros.some(r =>
r.valor?.medicamentos?.length && r.valor.medicamentos.some(m => m.diagnostico.conceptId === registro.concepto.conceptId)
);
const esAsociado = this.prestacion.ejecucion.registros.some(r => {
const medicamentoAsociado = r.valor?.medicamentos?.length && r.valor.medicamentos.some(m => m.diagnostico.conceptId === registro.concepto.conceptId);
const dispositivoAsociado = r.valor?.dispositivos?.length && r.valor.dispositivos.some(d => d.diagnostico.conceptId === registro.concepto.conceptId);
return medicamentoAsociado || dispositivoAsociado;
});

return !esAsociado;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Plex } from '@andes/plex';
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { RecetaService } from 'projects/portal/src/app/services/receta.service';
import { RecetaService } from 'src/app/modules/rup/services/receta.service';

@Component({
selector: 'suspender-medicacion',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { HUDSService } from '../../services/huds.service';
import { ConceptObserverService } from './../../services/conceptObserver.service';
import { ElementosRUPService } from './../../services/elementosRUP.service';
import * as moment from 'moment';
import { RecetaService } from 'projects/portal/src/app/services/receta.service';
import { RecetaService } from 'src/app/modules/rup/services/receta.service';

@Component({
selector: 'rup-vistaHuds',
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
import { Unsubscribe } from '@andes/shared';
import { Component, OnInit, ViewChild } from '@angular/core';
import { NgForm } from '@angular/forms';
import { RupElement } from '.';
import { RUPComponent } from '../core/rup.component';
@Component({
selector: 'rup-prescripcion-dispositivo',
templateUrl: 'prescripcionDispositivo.html',
styleUrls: ['recetaMedica.scss']
})

@RupElement('PrescripcionDispositivoComponent')

export class PrescripcionDispositivoComponent extends RUPComponent implements OnInit {
@ViewChild('formDispositivo') formDispositivo: NgForm;

public dispositivo: any = {
diagnostico: null,
generico: null,
cantidad: null,
tratamientoProlongado: false,
tiempoTratamiento: null
};
public collapse = false;
public unidades = [];
public genericos = [];
public registros = [];
public loading = false;
public diagnosticos = [];
public recetasConFiltros = [];
private eclDispositivos;

public tiemposTratamiento = [
{ id: '3meses', nombre: '3 meses' },
{ id: '6meses', nombre: '6 meses' }
];


ngOnInit() {
if (!this.registro.valor) {
this.registro.valor = {};
}
if (!this.registro.valor.dispositivos) {
this.registro.valor.dispositivos = [];
}
this.registros = this.prestacion.ejecucion.registros.filter(reg => reg.id !== this.registro.id).map(reg => reg.concepto);
this.buscarDiagnosticosConTrastornos();

this.ejecucionService?.hasActualizacion().subscribe(async (estado) => {
this.loadRegistros();
});

this.eclqueriesServicies.search({ key: '^receta' }).subscribe(query => {
this.eclDispositivos = query.filter(q => q.key === 'receta:dispositivos');
});
}

@Unsubscribe()
loadDispositivo(event) {
const input = event.query;
if (input && input.length > 2) {
const query: any = {
expression: this.eclDispositivos.valor,
search: input
};
this.snomedService.get(query).subscribe(event.callback);
} else {
event.callback([]);
}
}

loadRegistros() {
this.registros = [
...this.prestacion.ejecucion.registros
.filter(reg => reg.id !== this.registro.id && (reg.concepto.semanticTag === 'procedimiento'
|| reg.concepto.semanticTag === 'hallazgo' || reg.concepto.semanticTag === 'trastorno'))
.map(reg => reg.concepto),
...this.recetasConFiltros
];
}

buscarDiagnosticosConTrastornos() {
this.recetaService.buscarDiagnosticosConTrastornos(this.paciente).subscribe(diagnosticos => {
this.recetasConFiltros = diagnosticos;
});
}

agregarDispositivo() {
this.registro.valor.dispositivos.push(this.dispositivo);
this.unidades = [];
this.dispositivo = {
diagnostico: null,
generico: null,
cantidad: null,
tratamientoProlongado: false,
tiempoTratamiento: null
};
this.formDispositivo.reset();
this.formDispositivo.form.markAsPristine();
this.formDispositivo.form.markAsUntouched();
}

borrar(dispositivo) {
this.plex.confirm('¿Está seguro que desea eliminar este dispositivo de la receta?').then((resultado) => {
if (resultado) {
const index = this.registro.valor.dispositivos.indexOf(dispositivo);
this.registro.valor.dispositivos.splice(index, 1);
}
});
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
<ng-container *ngIf="!soloValores">
<form class="mt-1" #formDispositivo="ngForm">

<plex-select [(ngModel)]="dispositivo.diagnostico" hintType="info" label="Diagnóstico" [data]="registros"
name="diagnostico" multiline="true" [required]="true" labelField="term" idField="conceptId"
hint="Se listaran los conceptos registrados en esta consulta" hintType="info" hintIcon="eye">
</plex-select>

<plex-grid cols="2">
<plex-select [(ngModel)]="dispositivo.generico" name="generico" (getData)="loadDispositivo($event)"
placeholder="Dispositivo genérico" label="Dispositivo" idField="conceptId" labelField="term"
required="true">
</plex-select>

<plex-int class="formEditar" [ngClass]="{ 'w-100': !unidades.length }" name="comprimidos" label="Cantidad"
[(ngModel)]="dispositivo.cantidad" required="true" min="1" max="90">
</plex-int>
</plex-grid>

<plex-grid cols="2">
<plex-grid cols="2" style="margin-top: 2rem;grid-gap: 0;">
<plex-bool [(ngModel)]="dispositivo.tratamientoProlongado" name="tratamientoProlongado" type="slide"
label="Tratamiento prolongado">
</plex-bool>
<plex-select *ngIf="dispositivo.tratamientoProlongado" label=""
[(ngModel)]="dispositivo.tiempoTratamiento" name="tiempoTratamiento"
placeholder="Seleccione una opción" [data]="tiemposTratamiento" required="true">
</plex-select>
</plex-grid>
</plex-grid>
<hr>

<div class="d-flex justify-content-center">
<plex-button name="botonAgregar" type="info" [disabled]="!formDispositivo.valid"
(click)="agregarDispositivo()" [validateForm]="formDispositivo">
Agregar
</plex-button>
</div>
</form>

<div *ngIf="!registro.valor.dispositivos.length" class="lista-vacia">
<plex-label icon="cruz-hospital" type="default" size="md" direction="column" titulo='Aún no hay dispositivos
agregados' subtitulo=''>
</plex-label>
</div>

<plex-list size="md" *ngIf="registro.valor.dispositivos" class="mt-3">
<plex-item *ngFor="let item of registro.valor.dispositivos">
<plex-icon size="md" *ngIf="true" name="cruz-hospital" class="icon icon--border--producto mr-2">
</plex-icon>
<plex-label [tituloBold]="true" titulo="{{ item.generico.term | capitalizeFirst }}"
subtitulo="cantidad: {{ item.cantidad}}">
</plex-label>
<plex-badge *ngIf="item.diagnostico" size="sm" type="warning" hintType="warning">
{{ item.diagnostico.term | truncate }}
</plex-badge>
<plex-badge *ngIf="item.tratamientoProlongado" type="info">Tratamiento prolongado
</plex-badge>
<plex-button type="danger" size="sm" (click)="borrar(item)" icon="delete" tooltip="eliminar"></plex-button>
</plex-item>
</plex-list>
</ng-container>

<div *ngIf="soloValores">
<plex-list size="md" *ngIf="registro.valor.dispositivos" [selectable]="false">
<plex-item *ngFor="let item of registro.valor.dispositivos">
<plex-label [tituloBold]="true" titulo="{{ item.generico.term | capitalizeFirst }}"
subtitulo="cantidad: {{ item.cantidad}}">
</plex-label>
<plex-badge *ngIf="item.diagnostico" size="sm" type="warning" hintType="warning">
{{ item.diagnostico.term | truncate }}
</plex-badge>
<plex-badge *ngIf="item.tratamientoProlongado" type="info">Tratamiento prolongado
</plex-badge>
</plex-item>
</plex-list>
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import { RUPComponent } from '../core/rup.component';
styleUrls: ['recetaMedica.scss'],
})


@RupElement('RecetaMedicaComponent')
export class RecetaMedicaComponent extends RUPComponent implements OnInit {
@ViewChild('formMedicamento') formMedicamento: NgForm;
Expand Down Expand Up @@ -209,18 +208,9 @@ export class RecetaMedicaComponent extends RUPComponent implements OnInit {
}

buscarDiagnosticosConTrastornos() {
const fechaLimite = moment().subtract(6, 'months');
this.prestacionesService.getByPacienteTrastorno(this.paciente.id).subscribe((trastornos) => {

trastornos.forEach(trastorno => {
const fechaCreacion = trastorno.fechaEjecucion ? moment(trastorno.fechaEjecucion) : null;
const esActivo = trastorno.evoluciones[trastorno.evoluciones.length - 1].estado === 'activo';
if (fechaCreacion?.isAfter(fechaLimite) && esActivo) {
this.recetasConFiltros.push(trastorno.concepto);
}
});
this.recetaService.buscarDiagnosticosConTrastornos(this.paciente).subscribe(diagnosticos => {
this.recetasConFiltros = diagnosticos;
});

}

agregarMedicamento() {
Expand Down
4 changes: 2 additions & 2 deletions src/app/modules/rup/components/elementos/recetaMedica.html
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@
<plex-label [tituloBold]="true" titulo="{{ item.generico.term }}" subtitulo=" {{ item.cantEnvases}} envase(s) de {{ item.cantidad}} {{item.presentacion.term }}(s) {{ item.dosisDiaria.dosis? '| ' + item.dosisDiaria.dosis : '| ' }} {{ item.dosisDiaria.intervalo? ' cada ' + item.dosisDiaria.intervalo.nombre: '' }} {{ item.dosisDiaria.dias? ' durante ' + item.dosisDiaria.dias + ' día(s)':'' }}
"></plex-label>
<plex-badge *ngIf="item.diagnostico" size="sm" type="warning" hintType="warning">
{{ truncateDiagnostico(item.diagnostico.term) }}
{{ item.diagnostico.term | truncate }}
</plex-badge>
<plex-badge *ngIf="item.tratamientoProlongado" type="info">Tratamiento prolongado
</plex-badge>
Expand All @@ -130,7 +130,7 @@
<plex-label [tituloBold]="true" titulo="{{ item.generico.term }}" subtitulo=" {{ item.cantEnvases}} envase(s) de {{ item.cantidad}} {{item.presentacion.term }}(s) {{ item.dosisDiaria.dosis? '| ' + item.dosisDiaria.dosis : '| ' }} {{ item.dosisDiaria.intervalo? ' cada ' + item.dosisDiaria.intervalo.nombre: '' }} {{ item.dosisDiaria.dias ? ' durante ' + item.dosisDiaria.dias + ' día(s)':'' }}
"></plex-label>
<plex-badge *ngIf="item.diagnostico" size="sm" type="warning" hintType="warning">
{{ truncateDiagnostico(item.diagnostico.term) }}
{{ item.diagnostico.term | truncate }}
</plex-badge>
<plex-badge *ngIf="item.tratamientoProlongado" type="info">Tratamiento prolongado
</plex-badge>
Expand Down
2 changes: 1 addition & 1 deletion src/app/modules/rup/components/huds/vistaReceta.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Component, Input, OnInit } from '@angular/core';
import { IPaciente } from '../../../../core/mpi/interfaces/IPaciente';
import { HUDSService } from '../../services/huds.service';
import { RecetaService } from 'projects/portal/src/app/services/receta.service';
import { RecetaService } from 'src/app/modules/rup/services/receta.service';

@Component({
selector: 'vista-receta',
Expand Down
4 changes: 3 additions & 1 deletion src/app/modules/rup/elementos-rup.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ import { SemanticClassPipe } from './pipes/semantic-class.pipes';
import { SemanticIconPipe } from './pipes/semantic-icon.pipes';
import { RUPSoloValorPipe } from './pipes/elemento-rup-valor.pipes';
import { DirectiveLibModule } from '../../directives/directives.module';
import { PrescripcionDispositivoComponent } from './components/elementos/prescripcionDispositivo.component';

const RUPComponentsArray = [
RUPComponent,
Expand Down Expand Up @@ -130,7 +131,8 @@ const RUPComponentsArray = [
ChecklistComponent,
VacunasComponent,
SolicitudPrescripcionMedicamentoComponent,
SolicitudPrescripcionMedicamentoInternacionComponent
SolicitudPrescripcionMedicamentoInternacionComponent,
PrescripcionDispositivoComponent
];

@NgModule({
Expand Down
Loading