Page History
...
Nap-reference-web er en web applikation, som implementerer nap-typescript-sdk og nap-angular-sdk. Som konsekvens af dette, kan denne køres indlejret i et værtssytem (eks. nap-java-host) og kommunikerer med værtssystemet over en injected indlejret javascript bridgebro. Via Igennem denne bro henter applikationen en SAMLassertion og patientkonteksten patient konteksten fra værtssytemet, hvorefter den kalder den den tilhørende facade (nap-ref-facade) og forsøger at hente aftaledokumenter den valgte patient i værtssystemet. Kaldet indeholder den overført SAMLAssertion overførte SAMLassertion som en authentication header, og en hardcoded SOR værdi som X-OrganizationSor header.
Nap-reference-facade er en javaapplikation, som implementerer SEAL.java til at validerer SAMLassertion, org.openehealth.ipf.commons til at hente Aftale dokumenter aftaledokumenter fra Dokumentdelingsservice (DDS), og dk.s4.hl7.builders til at formatere aftaledokumenter fra XML til objekter, hvorfra den hiver den relevante information ud og sender tilbage til klienten.
Funktionaliteten af Nap-ref-web illustreres bedst, når applikation er indlejret i et værstsystem så som, f.eks. nap-java-host Platformsservices (NAP) - Leverancebeskrivelse.
...
I følgende beskrives opsætningstrinene for at komme i gang med NAP platformen.
Præliminere opsætningKrav til software:
Docker skal være installeret, da opsætningen foregår via docker-compose.
...
OBS vi har ikke nogen distributionskanal for denne executeable endnu. Så foreløbigt:
Kør `mvn install -Pgenerateexecutable` P generateexecutable` og start den executable det bliver generate i /target.
...
For at fanen "afprøvningsplatformen" skal fungere, skal Nap-Compose og Nap-Lobby og startes, som er de næste trin i opsætning.
Dette vil nemlig hoste lobbyen på localhost:8080/nap/lobby/web/, som er den url hosten kigger efter.
...
Der ligger et Developer projekt, der hurtigt kan sætte gang i anvendelsen af NAP - platformen som udviklingsmiljø.
Hvis dette projekt klikkes trykkes på, vil java-host åbne en hvilken som helst applikation der hostes på lokalhost:4600.
...
Når en ny applikation skal ind på platformen, er der 2 steder plat formen platformen skal konfigureres før det fungerer.
...
For at dit projekt skal vises i lobbyen, skal projektet optræde i din lokale napadmindb.
...
database og flyway skal således køres igen ved med `docker-compose up & docker-compose down`...
Da angular frameworket lægger sig op af model-view-controller pattern er dette også implementeret i nap-reference-web. Således bliver komponenter, templates og style sheets genereret med `ng g c`.
Derfor er der simple komponenter til at visning aftaler, hjælpinformation, fejl osv.
...
Services håndterer forretningslogikken og bliver genereret med `ng g s`. .
Derfor er der simple services til håndtering af authentication, applikationsfejl og konfigurering osv.
...
Nap-reference-web benytter sig af testframeworket Karma, da det kommer default med angular. Karma hiver bruger Istanbul indtil til at genere test-coverage rapporter. Testene køres i en headless chromium browser.
...
| Code Block | ||
|---|---|---|
| ||
export class AuthService {
private innerLogout: Subject<undefined>sessionMessageSubject = new Subject();
BehaviorSubject<NAPMessage | undefined>(
public logout$undefined
= this.innerLogout.asObservable();
public session$: Observable<NAPMessage | undefined> = merge(/**
* The current session
*
this.logout$,
* this.napSDK.incomming$.pipe(
filterEvents([NAPEventCatalogue.v1.SessionOpen, NAPEventCatalogue.v1.SessionClose]),@memberof AuthService
*/
public session$ = this.sessionMessageSubject.asObservable();
constructor(private napSDK: NapAngularService) {
this.napSDK.incomming$
shareReplay.pipe(1),
startWith(undefined),
)
);
constructor(private napSDK: NapAngularService) { filterEvents([
NAPEventCatalogue.v1.SessionOpen,
NAPEventCatalogue.v1.SessionClose,
])
)
.subscribe((napMessage) => {
if (napMessage.event.type === NAPEventCatalogue.v1.SessionOpen) {
this.sessionMessageSubject.next(napMessage);
} else {
this.sessionMessageSubject.next(undefined);
}
});
const napMsg: NAPMessage = {
date: new Date().toISOString(),
id: UUID(),
event: { type: NAPEventCatalogue.v1.SessionOpen },
};
// Ask for the SAMLassertion in host
this.napSDK.sendMessage(napMsg);
}
/**
* Tricker logout event
*/
logout(): void {
this.sessionMessageSubject.next(undefined);
const napMsg: NAPMessage = {
date: new Date().toISOString(),
id: UUID(),
event: { type: NAPEventCatalogue.v1.SessionOpen },
};
// Ask for the SAMLassertion in host
this.napSDK.sendMessage(napMsg);
}
logout(): void { UUID(),
event: { type: NAPEventCatalogue.v1.SessionClose },
};
this.innerLogoutnapSDK.nextsendMessage(undefinednapMsg);
}
} |
Patient-Open og Patient-close
...
Dokumentation
Kodedokumentationen opfølgere JavaDOCoverholder javadoc standarden således dette kan generes med et værktøj fra fx den IDE man bruger.
Sikkerhed
dk.sosi.seal bliver brugt til at verificere SAMLassertion.
...
Da denne service ikke er afhængige af database eller andre interne services, returnere den altid 400okstatuskode 200, hvis aplikationen kører.
...