Versions Compared

Key

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

...

Udviklingssetup og targets:

Installer

...

afhængigheder

Installer dependecies ved at køre `npm `npm install --registry https://nexus.nspop.dk/nexus/repository/nsp-npm/`

...

Byg

Kør `npm "npm run build` build" for at bygge projektet. Dette giver et output i dist/ folderen. 

...

For at køre unit tests med Karma kør `npm "npm run test`test". Det smider generere en coverage rapport i coverage/ folderenmappen.

CI

For at bygge SDK til CI køre `npm "npm run ci:build`build". Jenkins filen beskriver jenkins pipelinen.

Der kan laves snapshots og release-candidates fra jenkins.

Linting

Kør `npm "npm run lint` lint" for linting.

...

Dokumentation

For at generere TsDoc køre `npm run doc`dokumentation til koden, kør "npm run doc". Dokumentation ligger i docs/ mappen.

Projektstruktur

NAPMessages

NAPmessages NAPMessage 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 eventkataloget 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 givent projekt kan håndtere en række events.

Skal der implementeres nye events kræver det nye releases nyt release af nap-typescript-sdketsdk'et.

Bro

En NAP bridge er et simpelt interface med en send-funktion og en callback handle.

...

Et værtssystem skal ligge en sådan bridge på window.NAP.


Et eksempel på hvordan denne bridgen injectes i nap-java-host:

Code Block
languagejava
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"nap-typescript-sdk" kalder "createNAP()  kaldes ", bruger den referencen 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)

...

Der er defineret et fhir-value-getter NameSpace namespace med hjælpe funktioner til mappe NAPMessages til de værdier, som egentlig er interessante.

...

FhirValueSetter

Der er defineret et namespace, som hedder fhir-value-setter til namespace, som indeholder enums af typiske værdier, der skal sættes i NAPMessages.

...

  1. Et angular workspace i src-folderen. Dette kræves af angular framework for at serve et library.
  2. Det egentlige nap-angular-sdk, som warapper nap-typescript-sdk, i projects/nap-angular
    1. ng-package.json definerer de filer der skal pakkes og publishes.
  3. En test implementering, som bruger 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 derfor ingen unit tests. Sendte beskeder printes i console.log.

...

Installer afhængigheder

Installer dependecies ved at køre npm install --registry https://nexus.nspop.dk/nexus/repository/nsp-npm/

...

Udviklingserver

For at starte en web pack dev server kør `"npm run start:dev`dev".  Dette vil starte test implementering på (projects/test) http://localhost:4300/. 

...

Der kan laves snapshots og release-candidates fra jenkins.

...

Byg

Kør `npm "npm run build` build" for at bygge projektet. Dette giver et output i dist/ folderen. brug --prod flaget for et produktionsbyg.

...

Kør `npm run lint` for linting.

...

Dokumentation

For at generere TsDoc køres `npm run doc`dokumentation til koden, kør "npm run doc". Dokumentation ligger i docs/ mappen.

Nap-react-sdk

Indeholder 2 "projekter".

  1. Det egentligt nap-react-sdk i src
    1. Npm package mangeren bruger .npmignore til at ignore visse filer så som node_modules og example, når pakken skal bundles og publishes
  2. 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.

...

Installer afhængigheder

Installer dependecies ved at køre npm install --registry https://nexus.nspop.dk/nexus/repository/nsp-npm/

...

Byg

Run Kør "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" for at bygge projektet. Dette giver et output i dist/ folderen. brug --prod flaget for et produktionsbyg.

CI

Jenkins filen beskriver jenkins pipelinen.

Der kan laves snapshots og release-candidates fra jenkins.

Development server

Kør `npm run start` bygge sdket"npm run start" for at bygge sdk'et. Dette giver et output i disti dist/ folderen. Naviger dereter in Derefter navigere ind i example/ folderen og køre `npm "npm run start`start". Du  Derefter vil nu have en en dev server med live deployment af både eksempel-projektet og SDKet SDK'et køre på http://localhost:3000/.

Linting

Kør `npm "npm run lint` lint" for linting.

Documentation

For at generere TsDoc køres `npm run doc`dokumentation til koden, kør "npm run doc". Dokumentation ligger i docs/ mappen.