Skip to content

Commit

Permalink
feat(rup): independiza permisos rup ambulatorio y huds (#1646)
Browse files Browse the repository at this point in the history
  • Loading branch information
plammel authored Jun 3, 2020
1 parent e2aacd0 commit 61472b3
Show file tree
Hide file tree
Showing 8 changed files with 57 additions and 48 deletions.
3 changes: 1 addition & 2 deletions src/app/app.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,7 @@ export class AppComponent {
accessList.push({ label: 'RUP: Registro Universal de Prestaciones', icon: 'contacts', route: '/rup' });
}

let dato = this.auth.getPermissions('huds:?').length;
if (this.auth.getPermissions('huds:?').length || this.auth.getPermissions('rup:?').length) {
if (this.auth.getPermissions('huds:?').length) {
accessList.push({ label: 'HUDS: Visualizar por paciente', icon: 'file-tree', route: '/rup/huds' });
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export class HudsBusquedaPacienteComponent implements OnInit {
name: 'BUSCAR PACIENTE'
}]);

if (!this.auth.profesional && this.auth.getPermissions('huds:?').length <= 0) {
if (!this.auth.profesional || !this.auth.check('huds:visualizacionHuds')) {
this.router.navigate(['inicio']);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ export class PrestacionCrearComponent implements OnInit {
public loading = false;
public disableGuardar = false;
public resultadoBusqueda = [];
public tieneAccesoHUDS: Boolean;
/**
* Indica si muestra el calendario para dar turno autocitado
*/
Expand Down Expand Up @@ -77,7 +78,9 @@ export class PrestacionCrearComponent implements OnInit {
private hudsService: HUDSService) { }

ngOnInit() {
this.tieneAccesoHUDS = this.auth.check('huds:visualizacionHuds');
// Carga tipos de prestaciones permitidas para el usuario

this.servicioTipoPrestacion.get({ id: this.auth.getPermissions('rup:tipoPrestacion:?') }).subscribe(data => {
this.tiposPrestacion = data;
});
Expand Down Expand Up @@ -184,8 +187,9 @@ export class PrestacionCrearComponent implements OnInit {
}
};
this.disableGuardar = true;
if (pacientePrestacion) {
if (this.tieneAccesoHUDS && pacientePrestacion) {
nuevaPrestacion.paciente['_id'] = this.paciente.id;

const token = this.hudsService.generateHudsToken(this.auth.usuario, this.auth.organizacion, this.paciente, 'Fuera de agenda', this.auth.profesional, null, this.tipoPrestacionSeleccionada.id);
const nuevaPrest = this.servicioPrestacion.post(nuevaPrestacion);
const res = concat(token, nuevaPrest);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ export class PrestacionEjecucionComponent implements OnInit, OnDestroy {

public scopePrivacy = [];
public registrosHUDS = [];
private tieneAccesoHUDS: Boolean;

// Seguimiento Paciente San Juan
public flagSeguimiento = false;
Expand Down Expand Up @@ -145,6 +146,7 @@ export class PrestacionEjecucionComponent implements OnInit, OnDestroy {
* @memberof PrestacionEjecucionComponent
*/
ngOnInit() {
this.tieneAccesoHUDS = this.auth.check('huds:visualizacionHuds');
this.buscadorService.search('');
// consultamos desde que pagina se ingreso para poder volver a la misma
this.servicioPrestacion.rutaVolver.subscribe((resp: any) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@
</div>
</plex-tab>

<plex-tab label="Resumen del Paciente" *ngIf="paciente">
<plex-tab label="Resumen del Paciente" *ngIf="paciente && tieneAccesoHUDS">
<rup-resumenPaciente-estatico [prestacion]="prestacion" [paciente]="paciente">
</rup-resumenPaciente-estatico>
<rup-resumenPaciente-dinamico-nino *ngIf="paciente.edad <= 6" [paciente]="paciente">
Expand Down Expand Up @@ -349,7 +349,7 @@
(_onDragStart)="arrastrandoConcepto(true)" (_onDragEnd)="arrastrandoConcepto(false)">
</rup-buscador>
</plex-tab>
<plex-tab label="Historia de Salud" (click)="panelIndex = 1">
<plex-tab *ngIf="tieneAccesoHUDS" label="Historia de Salud" (click)="panelIndex = 1">
<rup-hudsBusqueda [paciente]="prestacion?.paciente" [_dragScope]="'registros-rup'"
(evtData)="ejecutarConceptoHuds($event)"
(_onDragStart)="arrastrandoConcepto(true)"
Expand Down
70 changes: 40 additions & 30 deletions src/app/modules/rup/components/ejecucion/puntoInicio.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ export class PuntoInicioComponent implements OnInit, OnDestroy {
public accesoHudsPrestacion = null;
public accesoHudsPaciente = null;
public accesoHudsTurno = null;
public tieneAccesoHUDS: Boolean;

constructor(private router: Router,
private plex: Plex, public auth: Auth,
Expand Down Expand Up @@ -100,7 +101,7 @@ export class PuntoInicioComponent implements OnInit, OnDestroy {
if (!this.auth.profesional) {
this.redirect('inicio');
} else {

this.tieneAccesoHUDS = this.auth.check('huds:visualizacionHuds');
this.plex.updateTitle([{
route: '/',
name: 'ANDES'
Expand Down Expand Up @@ -335,9 +336,12 @@ export class PuntoInicioComponent implements OnInit, OnDestroy {
iniciarPrestacion(paciente, snomedConcept, turno) {
this.plex.confirm('Paciente: <b>' + paciente.apellido + ', ' + paciente.nombre + '.</b><br>Prestación: <b>' + snomedConcept.term + '</b>', '¿Crear Prestación?').then(confirmacion => {
if (confirmacion) {
const token = this.hudsService.generateHudsToken(this.auth.usuario, this.auth.organizacion, paciente, snomedConcept.term, this.auth.profesional, turno.id, snomedConcept._id);
const crear = this.servicioPrestacion.crearPrestacion(paciente, snomedConcept, 'ejecucion', new Date(), turno);
const res = concat(token, crear);
let res = this.servicioPrestacion.crearPrestacion(paciente, snomedConcept, 'ejecucion', new Date(), turno);
if (this.tieneAccesoHUDS) {
const token = this.hudsService.generateHudsToken(this.auth.usuario, this.auth.organizacion, paciente, snomedConcept.term, this.auth.profesional, turno.id, snomedConcept._id);
res = concat(token, res);
}

res.subscribe(input => {
if (input.token) {
// se obtuvo token y loguea el acceso a la huds del paciente
Expand Down Expand Up @@ -627,18 +631,23 @@ export class PuntoInicioComponent implements OnInit, OnDestroy {

this.plex.confirm('Paciente: <b>' + paciente.apellido + ', ' + paciente.nombre + '.</b><br>Prestación: <b>' + snomedConcept.term + '</b>', '¿Iniciar Prestación?').then(confirmacion => {
if (confirmacion) {
const token = this.hudsService.generateHudsToken(this.auth.usuario, this.auth.organizacion, paciente, snomedConcept.term, this.auth.profesional, turno, prestacion.id);
const patch = this.servicioPrestacion.patch(prestacion.id, params);
const res = concat(token, patch);
res.subscribe(input => {
if (input.token) {
// se obtuvo token y loguea el acceso a la huds del paciente
window.sessionStorage.setItem('huds-token', input.token);
} else {
// prestacion
let res = this.servicioPrestacion.patch(prestacion.id, params);
if (this.tieneAccesoHUDS) {
const token = this.hudsService.generateHudsToken(this.auth.usuario, this.auth.organizacion, paciente, snomedConcept.term, this.auth.profesional, turno, prestacion.id);
concat(token, res).subscribe(input => {
if (input.token) {
// se obtuvo token y loguea el acceso a la huds del paciente
window.sessionStorage.setItem('huds-token', input.token);
} else {
// prestacion
this.router.navigate(['/rup/ejecucion', prestacion.id]);
}
});
} else {
res.subscribe(() => {
this.router.navigate(['/rup/ejecucion', prestacion.id]);
}
});
});
}
}
});
}
Expand Down Expand Up @@ -717,25 +726,26 @@ export class PuntoInicioComponent implements OnInit, OnDestroy {
}

preAccesoHuds(motivoAccesoHuds) {
if (motivoAccesoHuds) {
const doRoute = () => this.routeTo(this.routeToParams[0], (this.routeToParams[1]) ? this.routeToParams[1] : null);

if (this.tieneAccesoHUDS && motivoAccesoHuds) {
if (!this.accesoHudsPaciente && !this.accesoHudsPrestacion && this.routeToParams && this.routeToParams[0] === 'huds') {
// Se esta accediendo a 'HUDS DE UN PACIENTE'
window.sessionStorage.setItem('motivoAccesoHuds', motivoAccesoHuds);
} else {
if (this.accesoHudsPaciente) {
this.hudsService.generateHudsToken(this.auth.usuario, this.auth.organizacion, this.accesoHudsPaciente, motivoAccesoHuds, this.auth.profesional, this.accesoHudsTurno, this.accesoHudsPrestacion).subscribe(hudsToken => {
// se obtiene token y loguea el acceso a la huds del paciente
window.sessionStorage.setItem('huds-token', hudsToken.token);
this.routeToParams = [];
this.accesoHudsPaciente = null;
this.accesoHudsTurno = null;
this.accesoHudsPrestacion = null;
});
}

doRoute();
} else if (this.accesoHudsPaciente) {
this.hudsService.generateHudsToken(this.auth.usuario, this.auth.organizacion, this.accesoHudsPaciente, motivoAccesoHuds, this.auth.profesional, this.accesoHudsTurno, this.accesoHudsPrestacion).subscribe(hudsToken => {
// se obtiene token y loguea el acceso a la huds del paciente
window.sessionStorage.setItem('huds-token', hudsToken.token);
doRoute();
this.routeToParams = [];
this.accesoHudsPaciente = null;
this.accesoHudsTurno = null;
this.accesoHudsPrestacion = null;
});
}
this.routeTo(this.routeToParams[0], (this.routeToParams[1]) ? this.routeToParams[1] : null);

} else {
doRoute();
}
this.showModalMotivo = false;
}
Expand Down
11 changes: 5 additions & 6 deletions src/app/modules/rup/components/ejecucion/puntoInicio.html
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@
</td>
<td>
<ng-container *ngIf="turno.tipoPrestacion && turno.paciente?.id">
<plex-button size="block"
<plex-button size="block" *ngIf='tieneAccesoHUDS'
(click)="setRouteToParams(['vista', turno.paciente.id]); setAccesoHudsParams(turno.paciente, turno.id, turno.tipoPrestacion.id)"
label="VER HUDS" type="primary btn-sm">
</plex-button>
Expand Down Expand Up @@ -478,9 +478,8 @@
</td>

<td>
<ng-container
*ngIf="sobreturno.tipoPrestacion && sobreturno.paciente?.id">
<plex-button size="block"
<ng-container *ngIf="sobreturno.tipoPrestacion && sobreturno.paciente?.id">
<plex-button size="block" *ngIf='tieneAccesoHUDS'
(click)="setRouteToParams(['vista', sobreturno.paciente.id]); setAccesoHudsParams(sobreturno.paciente, sobreturno.id, sobreturno.tipoPrestacion.id)"
label="VER HUDS" type="primary btn-sm">
</plex-button>
Expand Down Expand Up @@ -576,7 +575,7 @@
</td>
<td>
<plex-button size="block"
*ngIf="!prestacion.solicitud.tipoPrestacion.noNominalizada"
*ngIf="!prestacion.solicitud.tipoPrestacion.noNominalizada && tieneAccesoHUDS"
(click)="setRouteToParams(['vista', prestacion.paciente.id]); setAccesoHudsParams(prestacion.paciente, null, prestacion.solicitud.tipoPrestacion.id)"
label="VER HUDS" type="primary btn-sm">
</plex-button>
Expand Down Expand Up @@ -607,7 +606,7 @@
</plex-layout-sidebar>
<plex-layout-footer *ngIf="!buscandoPaciente">
<!-- <plex-dropdown type="primary" label="Paciente" [items]="dropdownPaciente"></plex-dropdown> -->
<plex-button position="right" label="HUDS DE UN PACIENTE" type="primary" (click)="verHuds()" class="mr-1">
<plex-button *ngIf='tieneAccesoHUDS' position="right" label="HUDS DE UN PACIENTE" type="primary" (click)="verHuds()" class="mr-1">
</plex-button>
<plex-button position="right" label="PACIENTE FUERA DE AGENDA" type="primary"
(click)="crearPrestacion('fueraAgenda')" class="mr-1">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ export class VistaHudsComponent implements OnInit, OnDestroy {
public activeIndexPrestacion = 0;
public activeIndexResumen = 0;

public mostrarCambiaPaciente = false;
public registros = [];
// boton de volver cuando la ejecucion tiene motivo de internacion.
// Por defecto vuelve al mapa de camas
Expand Down Expand Up @@ -66,14 +65,10 @@ export class VistaHudsComponent implements OnInit, OnDestroy {
name: 'Historia Única De Salud'
}]);

if (!this.auth.profesional && this.auth.getPermissions('huds:?').length <= 0) {
if (!this.auth.profesional || !this.auth.check('huds:visualizacionHuds')) {
this.redirect('inicio');
}

if (!this.auth.profesional && this.auth.getPermissions('huds:?').length > 0) {
this.mostrarCambiaPaciente = true;
}

this.huds.registrosHUDS.subscribe((datos) => {
if (this.registros.length < datos.length) {
this.activeIndexPrestacion = datos.length + 1;
Expand Down

0 comments on commit 61472b3

Please sign in to comment.