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 @@
+
+ 0">
+
+
+
+
+
+
{{ receta.medicamento.concepto.term }}
+
Orden {{receta.medicamento.ordenTratamiento + 1}} de
+ {{receta.medicamento.tiempoTratamiento?.id}}
+
+
+
+ {{ receta.estadoActual.tipo }}
+
+
+ {{ receta.estadoDispensaActual.tipo.replace('-', ' ') }}
+
+
+
+
+
+
0">
0">
@@ -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() {