Skip to content

Commit

Permalink
fix(RUP-395): Receta - modificar molécula
Browse files Browse the repository at this point in the history
  • Loading branch information
aldoEMatamala committed Jun 4, 2024
1 parent 291a3a2 commit 257c292
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 48 deletions.
49 changes: 26 additions & 23 deletions src/app/modules/rup/components/elementos/recetaMedica.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ import { Unsubscribe } from '@andes/shared';
})
@RupElement('RecetaMedicaComponent')
export class RecetaMedicaComponent extends RUPComponent implements OnInit {
unidadesSnomed = '767525000 OR 258997004 OR 258684004 OR 258682000 OR 258685003 OR 258773002 OR 258989006 OR 439139003 OR 404218003';
viasSnomed = '764295003 OR 761829007 OR 738987007 OR 738986003 OR 738983006 OR 738956005 OR 738952007 OR 738948007 OR 255560000 OR 255559005 OR 421606006';
formasFarmaceuticasSnomed = `732997007 OR 732994000 OR 732987003 OR 732986007 OR 732981002 OR 732978007 OR 732937005 OR 732936001 OR
739009002 OR 739006009 OR 738998008 OR 385099005 OR 739005008`;
public medicamento: any = {
generico: null,
presentacion: null,
Expand Down Expand Up @@ -67,8 +71,8 @@ export class RecetaMedicaComponent extends RUPComponent implements OnInit {
search: ''
};
forkJoin(
[this.snomedService.get(queryPresentacion),
this.snomedService.get(queryUnidades)]
[this.snomedService.get(queryPresentacion)
, this.snomedService.get(queryUnidades)]
).subscribe(([resultado, presentaciones]) => {
this.medicamento.presentacion = resultado[0];
this.unidades = presentaciones.map(elto => {
Expand All @@ -80,28 +84,27 @@ export class RecetaMedicaComponent extends RUPComponent implements OnInit {

agregarMedicamento(form) {
if (form.formValid) {
if (this.registro.valor.medicamentos.length < this.params.limiteMedicamentos) {
if (this.medicamento.unidades.valor) {
this.medicamento.unidades = Number(this.medicamento.unidades.valor);
}
this.registro.valor.medicamentos.push(this.medicamento);
this.unidades = [];
this.medicamento = {
generico: null,
presentacion: null,
unidades: null,
cantidad: null,
diagnostico: '',
tipoReceta: 'simple',
tratamientoProlongado: false,
dosisDiaria: {
cantidad: null,
dias: null
}
};
} else {
this.plex.toast('warning', `No se permite cargar más de ${this.params.limiteMedicamentos} medicamentos.`);
if (this.medicamento.unidades?.valor) {
this.medicamento.unidades = Number(this.medicamento.unidades.valor);
}
this.registro.valor.medicamentos.push(this.medicamento);
this.unidades = [];
this.medicamento = {
generico: null,
presentacion: null,
unidad: null,
unidades: null,
cantidad: null,
diagnostico: '',
tipoReceta: 'simple',
tratamientoProlongado: false,
via: null,
dosisDiaria: {
cantidad: null,
dias: null
}
};

}
}

Expand Down
62 changes: 37 additions & 25 deletions src/app/modules/rup/components/elementos/recetaMedica.html
Original file line number Diff line number Diff line change
@@ -1,47 +1,57 @@
<ng-container *ngIf="!soloValores">
<form #formMedicamento="ngForm">
<plex-wrapper>
<plex-select [(ngModel)]="medicamento.generico" name="generico" (getData)="loadMedicamentoGenerico($event)"
placeholder="Medicamento genérico" label="Medicamento" idField="conceptId" labelField="term"
(change)="loadPresentaciones()" required="true">
</plex-select>
<plex-select name="unidades" *ngIf="unidades.length > 0" [(ngModel)]="medicamento.unidades"
[data]="unidades" placeholder="Seleccione una opción" label="Unidades por presentación"
labelField="valor" required="true">
</plex-select>
<plex-int name="unidades" label="Unidades por presentación" [(ngModel)]="medicamento.unidades"
*ngIf="unidades.length == 0" required="true" min="1" max="90">
</plex-int>
<plex-int name="envases" label="Envases" [(ngModel)]="medicamento.cantidad" required="true" min="1"
max="90">
</plex-int>
<plex-grid cols="2" class="mr-3">
<plex-select [(ngModel)]="medicamento.generico" name="generico" [snomedExpression]="'<105590001'"
(change)="loadPresentaciones()" label="Principio activo" [preload]="false" required>
</plex-select>


<plex-int name="unidades" label="Unidades por presentación" [(ngModel)]="medicamento.unidades"
*ngIf="unidades.length == 0" required="true" min="1" max="90">
</plex-int>
<plex-int name="envases" label="Envases" [(ngModel)]="medicamento.cantidad" required="true" min="1"
max="90">
</plex-int>
<plex-select label="Unidad Dosis" [(ngModel)]="medicamento.unidad" [snomedExpression]="unidadesSnomed"
name="uDosis" required></plex-select>

<plex-select [(ngModel)]="medicamento.via" name="via" [snomedExpression]="viasSnomed"
label="Vía de administración" [preload]="true">
</plex-select>

<plex-select [(ngModel)]="medicamento.presentacion" name="presentacion"
[snomedExpression]="formasFarmaceuticasSnomed" label="Forma Farmacéutica" [preload]="true">
</plex-select>
</plex-grid>


<plex-text [(ngModel)]="medicamento.diagnostico" label="Diagnóstico" name="motivo" multiline="true"
grow="full">
</plex-text>
<plex-radio [(ngModel)]="medicamento.tipoReceta" label="Tipo de receta" type="horizontal"
[data]="opcionesTipoReceta" name="tipoReceta">
</plex-radio>
<plex-bool [(ngModel)]="medicamento.tratamientoProlongado" label="Tratamiento prolongado"
name="tratamientoProlongado">
</plex-bool>

</plex-wrapper>
<plex-title titulo="Dosis diaria" size="sm"></plex-title>
<plex-wrapper>
<plex-int name="cantidadDiaria" label="Dosis" [(ngModel)]="medicamento.dosisDiaria.cantidad"
required="false" min="1" max="90">
<plex-int name="cantidadDiaria" label="Dosis" [(ngModel)]="medicamento.dosisDiaria.cantidad" required="true"
min="1" max="90">
</plex-int>
<plex-int name="duracion" label="Cantidad de días" [(ngModel)]="medicamento.dosisDiaria.dias"
required="false" min="1" max="90">
</plex-int>
</plex-wrapper>

<plex-button type="success" [disabled]="!formMedicamento.valid" (click)="agregarMedicamento($event)"
[validateForm]="formMedicamento">Agregar
</plex-button>
</form>
<plex-list size="sm" *ngIf="registro.valor.medicamentos" class="mt-3">
<plex-item *ngFor="let item of registro.valor.medicamentos">
<plex-label [tituloBold]="true" titulo="{{ item.generico.term }}" subtitulo="{{ item.unidades }} {{item.presentacion.term }}(s) por {{ item.cantidad }} envase(s) o {{ item.dosisDiaria.cantidad }} {{item.presentacion.term }}(s) por {{ item.dosisDiaria.dias }} días
"></plex-label>
<plex-label [tituloBold]="true" titulo="{{ item.generico.term }}"
subtitulo="Dosis : {{ item.cantidad }} {{item.unidad.term }} {{ item.via? '| Vía '+item.via.term:''}} {{ item.presentacion? ' | Forma farmaceutica : '+item.presentacion.term:'' }} {{ (item.dosisDiaria.cantidad && item.dosisDiaria.dias)? '| '+item.unidad +'(s) por ' + item.dosisDiaria.dias +' días' : '' }}"></plex-label>
<plex-badge *ngIf="item.diagnostico" type="warning" hint="{{item.diagnostico}}" hintIcon="informacion"
hintType="warning">Diagnóstico
</plex-badge>
Expand All @@ -53,17 +63,19 @@
</plex-item>
</plex-list>
</ng-container>

<div *ngIf="soloValores">
<plex-list size="sm" *ngIf="registro.valor.medicamentos">
<plex-item *ngFor="let item of registro.valor.medicamentos">
<plex-label [tituloBold]="true" titulo="{{ item.generico.term }}" subtitulo="{{ item.unidades }} {{item.presentacion.term }}(s) por {{ item.cantidad }} envase(s) o {{ item.dosisDiaria.cantidad }} {{item.presentacion.term }}(s) por {{ item.dosisDiaria.dias }} días
"></plex-label>
<plex-label [tituloBold]="true" titulo="{{ item.generico.term }}"
subtitulo="{{ item.unidades }} {{item.presentacion.term }}(s) por {{ item.cantidad }} envase(s) o {{ item.dosisDiaria.cantidad }} {{item.presentacion.term }}(s) por {{ item.dosisDiaria.dias }} días"></plex-label>
<plex-badge *ngIf="item.diagnostico" type="warning" hint="{{item.diagnostico}}" hintIcon="informacion"
hintType="warning"> Diagnóstico</plex-badge>
hintType="warning">Diagnóstico
</plex-badge>
<plex-badge *ngIf="item.tratamientoProlongado" type="info">Tratamiento prolongado
</plex-badge>
<plex-badge type="info">{{item.tipoReceta}}
</plex-badge>
</plex-item>
</plex-list>
</div>
</div>

0 comments on commit 257c292

Please sign in to comment.