Versions Compared

Key

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

...

På baggrund af dette dokument, er det muligt for leverandører af både lægepraksissystemer (LPS) og afprøvningsprojekter, at udvikle systemer som integrerer med NAP. 

Sammenhæng med øvrige dokumenter

Dette dokument er en del af den samlede dokumentation for NAP Platformen.

Dokumentet er udformet, så det i videst muligt omfang opfylder sit formål uafhængigt af de øvrige dokumenter.

Ønskes mere information omkring arkitektur og design findes dette på NAP Platform - Design og Arkitektur beskrivelse.

Ønskes mere information omkring installationsvejledning til anvender kan findes på NAP Platform - Installationsvejledning.


Kom i gang med NAP som projektudvikler

...

Denne guide er til opsætning af et lokalt miljø. 


Krav til software:

Docker (Docker Engine version 18.02.0+) skal være installeret, da opsætningen foregår via docker-compose.

For at alle komponenterne skal virke, skal nap-compose køre hele tidensom en reverse proxy.

Et docker netværk kaldet nap_net skal laves "docker network create nap_net".

...

Nap-administration er backenden og database, hvor projekterne bliver gemt.

...

Hvis dette projekt trykkes på, vil nap-java-host åbne en hvilken som helst applikation der hostes på http://localhost:4600.

Du kan læse mere om, hvordan der sendes beskeder til og fra et værtssystem på NAP SDK - Guide til anvendere.

Konfigurer din løsning ind i NAP

Når en nyt projekt skal fungere med NAP Platformen, er der 2 steder, hvor platformen lokalt skal konfigureres før det fungerer.

Reverse proxy

Reverse proxy konfigureres ved at opdatere nap-httpd.conf. i nap-compose.

...

Lav en konfiguration magen til ovenfor hvor reference og naprefweb udskiftes efter ønske med navnene på dine docker-services.

Urlen skal dog passe med, den url der indsættes i databasen nedenfor.

Database

For at dit projekt skal vises i lobbyen, skal projektet optræde i din lokale napadmindb i nap-administration. database.  

Du kan gøre dette med sql inserts direkte eller opdatere compose/db/migration/V2__insert_data_localhost.sql med en kopi af nedenstående, som bare opdateres med dit nye info

...

For at ændringer bliver reflekteret, skal databasen og flyway genstartes, og dette gøres med "docker-compose up down & docker-compose downup". 

Kom igang med NAP som værtssystem-/ LPS udvikler

...

I det nedenstående vil eksemplerne tage udgangspunkt i JavaFX, og der kan derfor også tages udgangspunkt i nap-host-java, hvis der er brug for inspiration.

nap-java-host på SVN.

Opsætning af kommunikation med SDK.

For at kunne kommunikere med SDK'et, gøres brug af et Webview (her webviewet's WebEngine), hvori man kan indlejre javascript på den indlæste HTML side, da det er den måde SDK'et fungere på. 

læs mere om dette her NAP SDK - Guide til udviklere#Guidetiludviklere-NAPBridge(kontekstdeling).

I nedenstående eksempel, tilføjes "NAPBridge" i variablen "NAP" " window" variablen, som er i global scope på den indlæste HTML side.

...

Et JS objekt, som bridge variablen er, gør at man kan eksekvere javascript metoder og undersøge javascript properties. 

Der er implementeret to metoder, som er send() og setCallback(), det er disse to metoder som SDK'et wrapper og kalder til


Send(), er et håndtag til at sende beskeder til hosten, gør brug af et internt subscribe pattern, som notificere dem som lytter. En implementering af dem der lytter, kunne se således ud:

...

Når kommunikationen er opsat med SDK'erne, eller initialt blot implementering af NapSessionOpen (NAP SDK - Guide til anvendere#Guidetilanvendere-Session-open/Session-close), er det nu klart til at vise alle de projekter der er tildelt.

De forskellige typer events kan læses på NAP SDK - Guide til anvendere.

For at se de projekter der er tilgængelige, skal NAP Lobby Web integreres med hentes i det nuværende system.

Dette gøres ved at få WebView'et til at indlæse en af nedenstående URL'er til nap-lobby-web.

Test1: INDSÆT URL

Test2: INDSÆT URL

Produktion: INDSÆT URL

NAP Test Web

Projektet har til hensigt at teste der kan sendes og modtages beskender igennem NAP sdk'erne.

Der er separate tests cases, som kan køres enkeltvis eller samlet. Den er derfor oplagt til at teste et værtsimplementerings implementering af eventkataloget.

Dette afprøvningsprojekt ligger både på test1 og test2 og kan åbnes fra lobbyen i det givne miljø.

Når et projekt i lobbyen klikkes sendes et even WebAppOpen event:

Code Block
languagejs
 /**
   * Send and open-webapp event to over the host bridge
   * @param webAppId the wep app id open
   */
  public instructHostToOpenWebApp(webAppId: string): void {
    const napMsg: NAPMessage = {
      date: new Date().toISOString(),
      id: UUID(),
      event: {
        type: NAPEventCatalogue.v1.WebAppOpen,
        context: [
          {
            resource: {
              resourceType: FHIRValueSetter.FHIRResourceType.Basic,
              code: {
                coding: [
                  {
                    code: NAPEventCatalogue.v1.WebAppOpen,
                    system: FHIRValueSetter.FHIRSystem.NAP,
                  },
                ],
              },
              identifier: [
                { system: FHIRValueSetter.FHIRSystem.NAP, value: webAppId },
              ],
            },
          },
        ],
      },
    };
    this.napSDK.sendMessage(napMsg);
  }

Et eksempel kunne være: 

Code Block
languagejs
{
 "date":"2020-06-22T10:40:50.079Z",
 "id":"43f642ed-b7ca-4c5b-91fc-e7fdf6e8ee4c",
 "event":{
	"type":"nap-open-webApp",
	"context":[{
		"resource":{
			"resourceType":"Basic",
			"code":{
				"coding":[{
					"code":"nap-open-webApp",
					"system":"nap"
				}]
			},
			"identifier":[{
				"system":"nap",
				"value":"11eaac74-505d-9772-ac11-0242c0a87002"
			}]
		}
 	}]
 }
}

Webappen med det givne id, kan så efterfølgende hentes på adminurl/webapp/id på hosten og åbnes i den indlejrede browser.

Test1: INDSÆT URL

Test2: INDSÆT URL

...