diff --git a/src/app/modules/rup/components/huds/vistaReceta.html b/src/app/modules/rup/components/huds/vistaReceta.html index 5d158b1fc1..58522bdab7 100644 --- a/src/app/modules/rup/components/huds/vistaReceta.html +++ b/src/app/modules/rup/components/huds/vistaReceta.html @@ -5,11 +5,11 @@
+ [type]="estadoReceta[recetaPrincipal.estadoActual.tipo]"> {{ recetaPrincipal.estadoActual.tipo.replace('-', ' ') }} + [type]="estadoDispensa[recetaPrincipal.estadoDispensaActual.tipo]"> {{ recetaPrincipal.estadoDispensaActual.tipo.replace('-', ' ') }} @@ -18,9 +18,10 @@
{{ 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)' : '' }} {{ @@ -67,6 +68,31 @@

+ +
+ +
+
+
+ +
+
+
{{ receta.medicamento.concepto.term }}
+

Orden {{receta.medicamento.ordenTratamiento + 1}} de + {{receta.medicamento.tiempoTratamiento?.id}}

+
+
+ + {{ receta.estadoActual.tipo }} + + + {{ receta.estadoDispensaActual.tipo.replace('-', ' ') }} + +
+
+
+
+
@@ -88,7 +114,7 @@ dispensa duplicada - + dispensa cancelada {{(estadoDispensa.fechaCancelada | date: 'dd/MM/yyyy HH:mm')}}
@@ -130,36 +156,86 @@
+ titulo="No hay elementos registrados"> - - - - - - {{ 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('-', ' ') }} - -
- - -
+
+ + + + + + + + + + + + + + + + + + + + + + + +
{{col.label}}
+ {{ item.fechaRegistro | date:'dd/MM/yyyy' }} + + {{ item.organizacion?.nombre }} + + {{ item.profesional?.nombre }} {{ item.profesional?.apellido }} + + {{ item.diagnostico?.term || item.diagnostico?.descripcion }} + +
+ + {{ item.estadoActual.tipo }} + + + {{ item.estadoDispensaActual.tipo.replace('-', ' ') }} + +
+
+ + TRATAMIENTO PROLONGADO + + +
+
+
+
+ +
+
+
{{ receta.medicamento.concepto.term }}
+

Orden {{receta.medicamento.ordenTratamiento + 1}} de + {{receta.medicamento.tiempoTratamiento?.id}}

+
+
+
+
+ + {{ receta.estadoActual.tipo }} + + + {{ receta.estadoDispensaActual.tipo.replace('-', ' ') }} + +
+
+
\ No newline at end of file diff --git a/src/app/modules/rup/components/huds/vistaReceta.scss b/src/app/modules/rup/components/huds/vistaReceta.scss index e6795ae3bc..8af15e9bb9 100644 --- a/src/app/modules/rup/components/huds/vistaReceta.scss +++ b/src/app/modules/rup/components/huds/vistaReceta.scss @@ -92,6 +92,13 @@ .detalle-dispensa { margin-right: 1; } + + .tratamiento-item { + display: flex; + padding: 10px 10px 10px 0px; + align-items: center; + border: 1px solid #999; + } } .historial-recetas { @@ -244,4 +251,84 @@ } } } +} + +.table-historial { + border-collapse: collapse; + + tr.grupo-header-expanded { + background-color: #f6fcff; // subtle blue background if needed + + td { + border-top: 1px solid #00a8e0 !important; + box-shadow: inset 0 1px 0 0 #00a8e0; + border-bottom: none !important; + + &:first-child { + border-left: 1px solid #00a8e0 !important; + box-shadow: inset 0 1px 0 0 #00a8e0, inset 1px 0 0 0 #00a8e0; + } + + &:last-child { + border-right: 1px solid #00a8e0 !important; + box-shadow: inset 0 1px 0 0 #00a8e0, inset -1px 0 0 0 #00a8e0; + } + } + } + + tr.grupo-detalle-expanded { + background-color: white; + + td { + border-top: 1px solid #dee2e6 !important; + border-bottom: none !important; + + &:first-child { + border-left: 1px solid #00a8e0 !important; + box-shadow: inset 1px 0 0 0 #00a8e0; + } + + &:last-child { + border-right: 1px solid #00a8e0 !important; + box-shadow: inset -1px 0 0 0 #00a8e0; + } + } + + &.ultimo-detalle td { + border-bottom: 1px solid #00a8e0 !important; + box-shadow: inset 0 -1px 0 0 #00a8e0; + + &:first-child { + box-shadow: inset 1px -1px 0 0 #00a8e0; + } + + &:last-child { + box-shadow: inset -1px -1px 0 0 #00a8e0; + } + } + + /* ensure the first detail row does not have double top border since the header has a top border */ + &.primer-detalle td { + border-top: none !important; + } + } +} + +.icon-wrapper { + min-width: 80px; + display: flex; + justify-content: center; +} + +.icon-info-detalle { + color: $recetas; + /* purple color mapped to $recetas */ + padding: 8px; + border: 1px solid $recetas; + border-radius: 100%; + width: 45px; + height: 45px; + align-items: center; + display: flex; + justify-content: center; } \ No newline at end of file diff --git a/src/app/modules/rup/components/huds/vistaReceta.ts b/src/app/modules/rup/components/huds/vistaReceta.ts index cc800b467f..ea39d0e421 100644 --- a/src/app/modules/rup/components/huds/vistaReceta.ts +++ b/src/app/modules/rup/components/huds/vistaReceta.ts @@ -98,6 +98,7 @@ export class VistaRecetaComponent implements OnInit { public recetas; public recetaPrincipal: any; public historialRecetas: any[]; + public recetasRestantes: any[] = []; constructor( public huds: HUDSService, @@ -106,9 +107,66 @@ 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'); + + const historialBase = this.registro.recetas.filter(receta => receta.id !== this.recetaPrincipal.id && receta.fechaRegistro <= this.recetaPrincipal.fechaRegistro && receta.estadoActual?.tipo !== 'eliminada'); + + this.recetasRestantes = this.registro.recetas.filter(r => + r.id !== this.recetaPrincipal.id && + r.idRegistro === this.recetaPrincipal.idRegistro && + this.recetaPrincipal.medicamento.tratamientoProlongado && + r.estadoActual?.tipo !== 'eliminada' + ); + this.recetasRestantes.sort((a, b) => (a.medicamento.ordenTratamiento || 0) - (b.medicamento.ordenTratamiento || 0)); + + const historialExcluidoActual = historialBase.filter(r => { + if (this.recetaPrincipal.medicamento.tratamientoProlongado) { + if (r.idRegistro === this.recetaPrincipal.idRegistro) { + return false; + } + if (r.medicamento.tratamientoProlongado && r.medicamento.concepto.conceptId === this.recetaPrincipal.medicamento.concepto.conceptId) { + return false; + } + } + return true; + }); + + const grupos = {}; + const result = []; + + historialExcluidoActual.forEach(receta => { + if (receta.medicamento.tratamientoProlongado && receta.idRegistro) { + if (!grupos[receta.idRegistro]) { + grupos[receta.idRegistro] = []; + } + grupos[receta.idRegistro].push(receta); + } else { + result.push(receta); + } + }); + + Object.keys(grupos).forEach(key => { + const recetasGrupo = grupos[key]; + const todasFinalizadas = recetasGrupo.every(r => r.estadoActual?.tipo !== 'vigente'); + if (todasFinalizadas) { + recetasGrupo.sort((a, b) => a.medicamento.ordenTratamiento - b.medicamento.ordenTratamiento); + result.push({ + esGrupo: true, + expandido: false, + fechaRegistro: recetasGrupo[0].fechaRegistro, + organizacion: recetasGrupo[0].organizacion, + profesional: recetasGrupo[0].profesional, + diagnostico: recetasGrupo[0].diagnostico, + recetas: recetasGrupo + }); + } else { + result.push(...recetasGrupo); + } + }); + + result.sort((a, b) => new Date(b.fechaRegistro).getTime() - new Date(a.fechaRegistro).getTime()); + this.historialRecetas = result; } combinarDispensas() {