Versions Compared

Key

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

...

Formålet med dette dokument er at beskrive de enkelte SDKers arkitektur og deres interne afhængigheder for NAP SDK'er.

Illustrationerne forsøger også at afbillede kontekstbroen "Nap Bridge" som er byggestenen for integrationen til anvender systemet.

 Sammenhæng med øvrige dokumenter

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

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

Information om hvordan SDKerne anvendes kan læse på NAP SDK - Guide til anvendere.

NAP-SDK placering i forhold til NAP platformen

NAP-sdk rolle i den samlede NAP platform er illustreret i Application Structure Viewpoint

Overordnet struktur af NAP-SDK

Den basale logik ligger i nap-typescript-sdk, og implementeres i som kan anvendes i et hvilket som helst javascript projekt.

Både nap-angular-sdk og nap-react-sdk implementerer Nap-typescript-sdk.

Nap-angular-sdk har derudover binding til Angular frameworket og er ment som udviklingsværktøj hertil.

Nap-react-sdk har deruodver binding til react biblioteket og er ment som udviklingsværktøj hertil.

Versionsnumrene for både nap-angular-sdk og nap-react-sdk følger nap-typescript-sdk og der garanteres ingen bagudkombatibliitet.

Gliffy Diagram
macroId4cb83a8b-8a02-4988-8e24-be934f68cc07
namesdkstructure
pagePin1


Nap-typescript-sdk

Konteksdelingsbro NAP Bridge

En kontekstdelings bro er kommunikationskanal mellem værts- og klientsystem. I NAP er dette et en JavaScript object, som fra værtssystem tilføjes global scope på klient systemet.

Objectet har formen:

Code Block
languagejs
interface NAPHostBridge {
  setCallback: (handler: { handle: (message: string) => void }) => void;
  send: (message: string) => void;
}

Ud fra denne simple opskrift bliver det muligt at sende beskeder frem og tilbage mellem værts- og klientsystem.


Initialisering af Konteksdelingsbro

 NapNår createNAP() kaldes Nap-typescript-sdk, sørger for at hente den bro (NAP bridge), som et anvendersystem (et vilkårligt lægepraksis system) har indlejret på global scope, som illustreret i komponent diagrammet nedenfor.

Code Block
languagejs
  /**
   * Check and fetch the Javascript object injected by the host
   */
  let temporaryHostBridge;
  let hostBridge = undefined;
  try {
    temporaryHostBridge =
      window !== undefined ? (window['NAP'] as NAPHostBridge) : undefined;
  } finally {
    hostBridge = temporaryHostBridge;
    if (!hostBridge) {
      postError(Errors.NO_HOSTBRIDGE_100);
    }
  }

Hvis denne bro findes på global scope opretter nap-typescript-sdk håndtag og messagestreams til kommunikation med værtssystemet. Dette er illustreret neden for:

Gliffy Diagram
macroId26a7b1ea-8710-4c54-b494-4c9c88cb0a42
namebridgesetup
pagePin2

...

Udstiller en service som sørger for, at de asynkrone operationer i nap-typescript-sdk bliver kørt i NgZone, som er Angulars change detection zone for asynkrone værdier. Således sker initialisering af kontektsbroen kontekstbroen som en singleton vha. Angular dependency injection og DOM vil blive opdateret hvis observables emitter nye værdier.


Gliffy Diagram
bordertrue
namenap-angular-sdk
pagePin38




Nap-react-sdk

Skal udstille Udstiller en "context provider" som følger Reacts context pattern, således at initialisering af kontekstbroen sker som en singleton og Context provideren kan håndtere state.

Gliffy Diagram
macroIdd85b94a6-0b25-4f61-a76e-c72b068b9c24
namenap-react-sdk
pagePin28