Page History
Navitabs | ||||
---|---|---|---|---|
| ||||
Nap-typescript-sdk
Udviklingssetup og targets:
Installer dependencies
Installer dependecies ved at køre `npm install --registry https://nexus.nspop.dk/nexus/repository/nsp-npm/
`
Build
Kør `npm run build` for at bygge projektet. Dette giver et output i dist/ folderen.
Unit tests
For at køre unit tests med Karma kør `npm run test`. Det smider en coverage rapport i coverage/ folderen.
CI
For at bygge SDK til CI køre `npm run ci:build`.
Jenkins filen beskriver jenkins pipelinen
Linting
Kør `npm run lint` for linting.
Documentation
For at generere TsDoc køre `npm run doc`
Projektstruktur
NAPMessages
NAPmessages er meget inspireret af FHIR / FHIRcast (https://fhircast.org/specification/Feb2020Ballot/), og er udgangspunktet i NAPmessage datastrukturen og grundlaget for de events der er implementeret i eventkatalog version 1. Eventkataloget fungerer som versionering af NAP events.
Et anvenderprojekt definerer hvilken version af eventkataloget den implementerer. Dette fungerer som en kontrakt således, at et givent værtssytem ved at et giventprojekt kan håndtere en række events.
Skal der implementeres nye events kræver det nye releases af nap-typescript-sdket.
Bro
En NAP bridge er et simpelt interface med en send-funktion og en callback handle.
Code Block | ||
---|---|---|
| ||
interface NAPHostBridge { setCallback: (handler: { handle: (message: string) => void }) => void; send: (message: string) => void; } |
Et værtssystem skal ligge en sådan bridge på window.NAP.
Et eksempel hvordan denne injectes i nap-java-host:
Code Block | ||
---|---|---|
| ||
package dk.sds.nap.integrations; import java.io.IOException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import dk.sds.nap.scenes.WebPane; import netscape.javascript.JSObject; public class EmbeddedJavascriptIntegration extends AbstractBaseIntegration implements Integration { private static ObjectMapper objectMapper = new ObjectMapper(); public NAPBridge bridge = new NAPBridge(); public EmbeddedJavascriptIntegration(final WebPane webPane) { webPane.addInterface("NAP", bridge); } @Override public void send(NAPEvent event) { System.out.println("napevent send: " + event.getType()); System.out.println("payload: " + event.getPayload()); final String eventRawJSONString; try { eventRawJSONString = objectMapper.writeValueAsString(event); this.bridge.bridge.call("handle", eventRawJSONString); } catch (JsonProcessingException jsonProcessingException) { System.out.println(this.getClass().getName()+ " " + jsonProcessingException); } } public class NAPBridge { private JSObject bridge; public void send(String rawEventString) { try { System.out.println(this.getClass().getName() + " send(): " + rawEventString); NAPEvent event = objectMapper.readValue(rawEventString, NAPEvent.class); notifyListeners(event); } catch (IOException ioException) { System.out.println(this.getClass().getName() + " " + ioException); } } public void setCallback(JSObject bridge) { System.out.println(this.getClass().getName() + " setCallBack(): " + bridge); this.bridge = bridge; } } } |
Når Nap-typescript-sdk createNAP() kalder sørger den for at finde en reference til denne bridge. Håndtaget til sendMessage() bruges til at initialisere en toHost kanal (fra det indlejrede system til værtssystemet). Håndtaget for setCallback bruges for at opsætte en fromHost kanal (fra værtssytemet til det indlejrede system)
FhirValueGetter
Der er defineret et fhir-value-getter NameSpace med utility funktioner til mappe NapMessages til de værdier, som egentlig er interessan..
Mapping funktioner | |
Funktionsnavn | Beskrivelse |
---|---|
getSessionValue() | Trækker SAMLassertion ud af et SessionOpenEvent |
getPationInfo() | Trækker familyName, givenName og ssNo ud af et PatientOpenEvent |
FhirValueSetter
Der er defineret fhir-value-setter NameSpace til enums af typiske værdier, der skal sættes i for NapMessages.
Mapping funktioner | |
Type | Beskrivelse |
---|---|
FHIRResourceType | Resource typen for event ('Patient' | 'Basic') |
FHIRSystem | System identifier ('nap') |
FHIRIdentifierSystem | System identifier til cpr, errorMessage og errorDescription |
Nap-angular-sdk
Indeholder 3 "projekter".
- Et angular workspace i src-folderen. Dette kræves af angular framework for at serve et library.
- Det egentlige nap-angular-sdk, som warapper nap-typescript-sdk, i projecs/nap-angular
- ng-package.json definerer de filer der skal pakkes og publishes.
- En test implementering, som motionerer nap-angular-sdk i projects/test. Heri er injected en fakebridge i index.html.
Dette er den egentlige test af SDKet, og der køres ingen unit tests. Sendte beskeder printes i console.log.
Dependencies
Installer dependecies ved at køre npm install --registry https://nexus.nspop.dk/nexus/repository/nsp-npm/
Development server
For at starte en web pack dev server kør `npm run start:dev`
. Dette vil starte test implementering på (projects/test) http://localhost:4300/
.
Build
Kør `npm run build` for at bygge projektet. Dette giver et output i dist/
folderen. brug --prod
flaget for et produktionsbyg.
Linting
Kør `npm run lint` for linting.
Documentation
For at generere TsDoc køres `npm run doc`.
Nap-react-sdk
Indeholder 2 "projekter".
- Det egentligt nap-react-sdk i src
- Npm package mangeren bruger .npmignore til at ignore visse filer så som node_modules og example, når pakken skal bundles og publishes
- Et eksempel implementering, som motionerer nap-react-sdk i example/src. Heri er injected en fakebridge i index.html. Dette er den egentlige test af SDKet, og der køres ingen unit tests. Sendte beskeder printes i console.log.
Install
Installer dependecies ved at køre npm install --registry https://nexus.nspop.dk/nexus/repository/nsp-npm/
Build
Run npm run build
to build the project. The build artifacts will be stored in the dist/
directory. Use the --prod
flag for a production build.
CI
Jenkins filen beskriver jenkins pipelinen.
Development server
Kør `npm run start` bygge sdket. Dette giver et output i dist/
folderen. Naviger dereter in i example/ folderen og køre `npm run start`. Du vil nu have en en dev server med live deployment af både eksempel-projektet og SDKet på http://localhost:3000/.
Linting
Kør `npm run lint` for linting.
Documentation
For at generere TsDoc køres `npm run doc`.