1. Introduktion

1.1. Formål

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

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

1.2.  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.

2. NAP-SDK placering i forhold til NAP platformen

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

3. Overordnet struktur af NAP-SDK

Den basale logik ligger i nap-typescript-sdk, 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.

sdkstructure


4. Nap-typescript-sdk

4.1. 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:

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.


4.2. Initialisering af Konteksdelingsbro

Nå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.

  /**
   * 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:

bridgesetup

Denne bro bliver af nap-typescript-sdk brugt til at lave toHost og fromHost message streams for indkommende og udgående beskeder samt subscriptions.


5. Nap-angular-sdk

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 kontekstbroen som en singleton vha. Angular dependency injection og DOM vil blive opdateret hvis observables emitter nye værdier.


nap-angular-sdk




6. Nap-react-sdk

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.

nap-react-sdk






  • No labels