Skip to content

Commit

Permalink
RUP - Nueva molecula ACV (#2752)
Browse files Browse the repository at this point in the history
* feat(rup): nueva molecula para trastorno de acv

* agrega control de cambios para hora de inicio
  • Loading branch information
negro89 authored Jan 27, 2023
1 parent fbf3da1 commit 346ada9
Show file tree
Hide file tree
Showing 4 changed files with 137 additions and 18 deletions.
69 changes: 61 additions & 8 deletions src/app/modules/rup/components/elementos/moleculaBase.component.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,41 @@
import { Component, OnInit } from '@angular/core';
import { RUPComponent } from '../core/rup.component';
import { RupElement } from '.';
import { threadId } from 'worker_threads';

@Component({
selector: 'rup-molecula-base',
templateUrl: '../core/rup.html'
templateUrl: 'moleculaBase.html'
})
@RupElement('MoleculaBaseComponent')
export class MoleculaBaseComponent extends RUPComponent implements OnInit {
contentLoaded = false;
ultimaConsulta;
validacion = false;
public contentLoaded = false;
public ultimaConsulta;
public validacion = false;
public estados = [
{ id: 'resuelto', nombre: 'Resuelto' },
{ id: 'activo', nombre: 'Activo' }
];
public consultaTrastornoOriginal: any;
public evoluciones;

ngOnInit() {
if (this.registro.concepto.semanticTag === 'trastorno') {
if (!this.registro.valor) {
this.registro.valor = { estado: 'activo' };
}
const regFechaInicio = this.registro.registros.find(reg => reg.concepto.conceptId === '298059007');
const regHhoraInicio = this.registro.registros.find(reg => reg.concepto.conceptId === '405795006');
if (regFechaInicio?.valor && regHhoraInicio?.valor) {
const inicio = moment(regHhoraInicio.valor).date(moment(regFechaInicio.valor).date()).toDate();
this.registro.valor.fechaInicio = inicio;
}
// Si llega un idRegistroOrigen es porque se trata de evolucionar un problema que ya existe en la HUDS
// tenemos que mostrar las evoluciones anteriores
if (this.registro.valor.idRegistroOrigen) {
this.getRegistrosAnteriores(this.registro.concepto);
}
}

if (this.params && this.params.hasSections) {
this.registro.hasSections = true;
}
Expand All @@ -40,15 +62,43 @@ export class MoleculaBaseComponent extends RUPComponent implements OnInit {
}
}
this.contentLoaded = true;

});
} else {
this.contentLoaded = true;
}

this.createRules();
}

onChange(value) {
if (this.registro.concepto.semanticTag === 'trastorno') {
const regFechaInicio = this.registro.registros.find(reg => reg.concepto.conceptId === '298059007');
const regHhoraInicio = this.registro.registros.find(reg => reg.concepto.conceptId === '405795006');
if (regFechaInicio?.valor && regHhoraInicio?.valor && (value.concepto.conceptId === '298059007' || value.concepto.conceptId === '405795006')) {
// para mantener el registro 'horaInicio' consistente con la fecha, ya que desde la molecula solo podemos setear la hora
regHhoraInicio.valor = moment(regHhoraInicio.valor).date(moment(regFechaInicio.valor).date()).toDate();
regFechaInicio.valor = moment(regHhoraInicio.valor).date(moment(regFechaInicio.valor).date()).toDate();
this.registro.valor.fechaInicio = regHhoraInicio.valor;
}
}
}

getRegistrosAnteriores(idOrigen) {
this.prestacionesService.getUnTrastornoPaciente(this.paciente.id, idOrigen).subscribe(trastorno => {
if (trastorno) {
this.consultaTrastornoOriginal = trastorno.registros.find(reg => reg.concepto.conceptId === this.registro.concepto.conceptId);
this.evoluciones = [...trastorno.evoluciones];

if (this.evoluciones && this.evoluciones.length > 0) {
this.registro.valor.estado = this.registro.valor.estado || 'activo';
this.registro.valor.fechaInicio = this.consultaTrastornoOriginal.registros.find(reg => reg.concepto.conceptId === '298059007').valor;
this.registro.registros.find(reg => reg.concepto.conceptId === '298059007').valor = this.registro.valor.fechaInicio;
this.registro.registros.find(reg => reg.concepto.conceptId === '405795006').valor = this.consultaTrastornoOriginal.registros.find(reg => reg.concepto.conceptId === '405795006').valor;
this.registro.valor.evolucion = this.registro.registros.find(reg => reg.concepto.conceptId === '229059009').valor;
}
}
});
}

createRules() {
if (this.elementoRUP.rules?.length > 0) {
const registros = (this.registro.registros || []);
Expand All @@ -62,8 +112,11 @@ export class MoleculaBaseComponent extends RUPComponent implements OnInit {
const { params } = evento;
this.conceptObserverService.notify(params.target, { valor: params.valor } as any);
});

}
}

formatearEstado() {
this.registro.valor.estado = ((typeof this.registro.valor.estado === 'string')) ? this.registro.valor.estado : (Object(this.registro.valor.estado).id);
this.emitChange();
}
}
58 changes: 58 additions & 0 deletions src/app/modules/rup/components/elementos/moleculaBase.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<ng-container *ngIf="registro.concepto.semanticTag === 'trastorno'">
<form #form="ngForm" *ngIf="paciente">
<div *ngIf="elementoRUP && registro">
<plex-label *ngIf="evoluciones?.length"
titulo="Fecha de inicio de los síntomas: {{ (consultaTrastornoOriginal?.registros[0]?.valor | date: 'dd/MM/yyyy hh:mm a') || 'Sin registro' }}"
[tituloBold]="true">
</plex-label>
<ng-container *ngIf="elementoRUP.requeridos?.length">
<plex-grid size="sm" type="full" cols="{{ elementoRUP.style.columns }}">
<div span="4">
<plex-label titulo="Estado actual" [tituloBold]="true"></plex-label>
<plex-select *ngIf="!soloValores" [(ngModel)]="registro.valor.estado" name="estadoActual"
[data]="estados" [required]="true" (change)="formatearEstado()">
</plex-select>
<plex-label *ngIf="soloValores" case="capitalize">{{ registro.valor.estado }}</plex-label>
</div>
<ng-container *ngFor=" let item of elementoRUP.requeridos; let i=index">
<div *ngIf="item.elementoRUP" span="{{item.style.columns}}">
<ng-conteiner *ngIf="!evoluciones?.length || item.concepto.conceptId === '229059009'">
<!-- Si se esta evolucionando, solo se muestra el campo 'evolucion' -->
<rup [elementoRUP]="item.elementoRUP" [paciente]="paciente" [params]="item.params"
[prestacion]="prestacion" [registro]="registro.registros[i]"
[soloValores]="soloValores" span="{{ item.style.columns }}"
(change)="onChange($event)">
</rup>
</ng-conteiner>
</div>
</ng-container>
</plex-grid>
</ng-container>
</div>
</form>
</ng-container>
<ng-container *ngIf="registro.concepto.semanticTag !== 'trastorno'">
<div *ngIf="(ultimaConsulta?.updatedAt || ultimaConsulta?.createdAt) && !validacion" class="row bg-faded"
class="d-flex justify-content-start">
<div class="col m-0 p-0 bg-registro-anterior">
<span>
Registros tomados el {{ (ultimaConsulta.updatedAt || ultimaConsulta.createdAt) | fecha }},
por
{{ ultimaConsulta.createdBy | nombre }}</span>
</div>
</div>
<!-- Moléculas -->
<ng-container *ngIf="contentLoaded && elementoRUP.requeridos && elementoRUP.requeridos.length">
<div class="row" [ngClass]="{'d-flex justify-content-start': soloValores}">
<ng-container *ngFor="let item of requeridos; let i = index">
<div *ngIf="item.elementoRUP"
class="col-{{ item.style.columns }} mr-{{ item.style?.offset ? item.style.offset : '0' }}">
<rup [elementoRUP]="item.elementoRUP" [paciente]="paciente" [params]="item.params"
[prestacion]="prestacion" [registro]="registro.registros[i]" [soloValores]="soloValores"
[style]="item.style" (change)="emitChange($event)">
</rup>
</div>
</ng-container>
</div>
</ng-container>
</ng-container>
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ export class ValorFechaComponent extends RUPComponent implements OnInit {
case 'date':
return (this.registro.valor) ? moment(this.registro.valor).format('DD/MM/YYYY') : 'Sin fecha';
case 'datetime':
return (this.registro.valor) ? moment(this.registro.valor).format('DD/MM/YYYY hh:mm') : 'Sin fecha';
return (this.registro.valor) ? moment(this.registro.valor).format('DD/MM/YYYY HH:mm') : 'Sin fecha';
case 'time':
return (this.registro.valor) ? moment(this.registro.valor).format('hh:mm') : 'Sin hora';
return (this.registro.valor) ? moment(this.registro.valor).format('HH:mm') : 'Sin hora';
default:
break;
}
Expand Down
24 changes: 16 additions & 8 deletions src/app/modules/rup/components/huds/vistaRegistro.html
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,22 @@ <h5 class="ml-1 text-primary evoluciones">Evoluciones</h5>
{{ registro.evoluciones[indice].estado }}
</ng-container>
</plex-badge>
<small *ngIf="registro?.evoluciones?.length">
({{ (registro.evoluciones[indice]?.fechaInicio ?
registro.evoluciones[indice].fechaInicio :
registro.evoluciones[indice].fechaCarga) | fromNow }})
</small>
<small *ngIf="registro?.valor?.fechaInicio">
({{ registro.valor.fechaInicio | fromNow }})
</small>
<ng-container *ngIf="registro.concepto.conceptId === '230690007'">
<small *ngIf="registro?.evoluciones?.length">
({{ (registro.evoluciones[indice]?.fechaInicio ||
registro.evoluciones[indice].fechaCarga) | fecha }})
</small>
</ng-container>
<ng-container *ngIf="registro.concepto.conceptId !== '230690007'">
<small *ngIf="registro?.evoluciones?.length">
({{ (registro.evoluciones[indice]?.fechaInicio ||
registro.evoluciones[indice].fechaCarga) | fromNow }})
</small>
<small *ngIf="registro?.valor?.fechaInicio">
({{ registro.valor.fechaInicio | fromNow }})
</small>
</ng-container>

<small *ngIf="!registro?.evoluciones?.length && !registro?.valor.fechaInicio">
(Sin registro)
</small>
Expand Down

0 comments on commit 346ada9

Please sign in to comment.