Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Applikationens hovedfunktionalitet er at vise aftaledokumenter for den patient, der er i kontekst i det værtssystem, den er indlejret i (f.eks. nap-java-host). Derfor af funktionalitet i applikationen begrænset, hvis den åbnes uden at være framet.

Hvis applikationen køres indlejret i indlejret et værtssystem som understøtter sikker browser opstart og tilføjer NAP Bridge på global scope af indlejrede systeme kan kommunikation mellem host og nap-reference ske i gennem NAP SDK - Guide til anvendere.

...

Nap-reference-web er en front end til nap-reference-facade og deployes i dennes kontekst-rod i byggepipelinen.

Se NAP Ref.Impl. - Installationsvejledning for mere information omkring Jenkins pibeline.

Opsætning og struktur af et angular projekt

...

Nap-reference-web benytter sig af en json konfigurationsfil, som loades via configuration-configurations servicen.

Der findes 2 konfigurationer en til dev (configurations-dev.json) samt en til releases (configurations.json) som adskiller sig i serverens url.

Configurations-dev.json anvendes til når nap-refence-web er under udvikling og køres via ng serve (så der kommer live reloading af kodeændringer), hvor configurations.json anvendes når nap-reference-web er pakket og deployet sammen med nap-reference-facade i kontekst rodenkontekstroden.

For yderligere information omkring konfiguration henvises til NAP Ref.Impl. - Guide til udviklereDriftsvejledning.

Da INSP web applikationer og services kan blive deployet på vilkårlige url'er, og skal kunne loade ressourcer relativt til, hvor de er deployet, er det vigtigt at applikationen fungerer med relative paths.

...

Auth service lytter på indkommende beskeder fra NAP SDK'et, og filtrerer beskeder, således det kun er beskeder af typen SessionClose. 

Hvis en bruger ønsker at blive logget ud sendes en besked med SessionClose fra det den kontekst brugeren har igangsat eventet.

Det betyder at eventet både kan sendes fra indlejret system til værtsystem og omvendt.

Når brugeren skal logges ud skal browseren flyttes til den saml/Logout på den server, der holder sessionen

Se kodestumpenden nedenfor.

Code Block
languagejs
import { Injectable } from '@angular/core';
import { NapAngularService } from 'nap-angular-sdk';
import {
  filterEvents,
  NAPEventCatalogue,
  NAPMessage
} from 'nap-typescript-sdk';
import { combineLatest, merge, Observable, Subject } from 'rxjs';
import { map, switchMap, tap } from 'rxjs/operators';
import { v4 as UUID } from 'uuid';
import { ConfigurationsService } from './configurations.service';

/**
 * Service to handle user session
 *
 * @export AuthService
 * @class AuthService
 */
@Injectable({
  providedIn: 'root',
})
export class AuthService {

  innerLogout = new Subject<undefined>();
  logOut$: Observable<boolean> = merge(
    this.innerLogout,
    this.napSDK.incoming$.pipe(
      filterEvents([NAPEventCatalogue.v1.SessionClose]),
    )).pipe(
      switchMap(() => this.logOutUrl$),
      tap(logOutUrl => {
        // Direct the window to the OIOSaml logout filter
        window.location.assign(logOutUrl);
        console.log('Will redirect:' + logOutUrl);
      }
      ),
      map(() => true)
    );

  private logOutUrl$: Observable<string> = combineLatest([
    this.configService.fetch(
      config => config.serverUrl
    ),
    this.configService.fetch(config => config.logOutEndpoint)
  ]).pipe(
    map(([serverUrl, logOutUrl]) => serverUrl + logOutUrl),
  )

  constructor(
    private napSDK: NapAngularService,
    private configService: ConfigurationsService
  ) {
  }

  /**
   * completes the current session and logs out the user
   */
  logout(): void {
    console.log('NapReferenceWeb Logging out');
    this.innerLogout.next(undefined);
    const napMsg: NAPMessage = {
      date: new Date().toISOString(),
      id: UUID(),
      event: { type: NAPEventCatalogue.v1.SessionClose },
    };
    this.napSDK.sendMessage(napMsg);

  }
}

...

I komponenten appointment (src/app/appoinmentappointment/), vises de forskellige aftaler for den givne patient.

...

Nap-reference-facade er backend til nap-reference-web og deployes med denne webapplikation i kontekst roden.

Nap-reference-facade er bygget med java 8 og fungerer som illustration på:

  1. Projekt opsætning overholdende https://www.nspop.dk/display/public/web/Husregler+for+udvikling+til+NSP.
  2. Sikkerhed i NAP kontekst Sikkerhedsarkitektur for iNSP løsninger
  3. Brug af Dokumentdelingsservice (DDS)

I bygge processen lægges den bygge nap-reference-web ind i src/main/webapp, hvorfra disse er tilgængelig i kontekstroden. Se NAP Ref.Impl. - Installationsvejledning for mere information omkring Jenkins pibeline.

Opsætning og struktur 

Dependencies

...

Der findes flere information om hvordan nap-refernece-facade konfigureres på NAP Ref.Impl. - Guide til udviklereDriftsvejledning.

Testing

Testene bliver eksekveret af maven-surefire-plugin med test frameworket junit. Test coverage bliver målt af Jacoco.

...

Nedenstående er eksempler på en DGWS interceptorSOAP interceptors, som sætter en DGWS header for client requests til DGWS.

...