Versions Compared

Key

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

...

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

Projektet nap-host-java, kan findes på SVN https://svn.nspop.dk/svn/components/nap/nap-host-java/INDSÆT LINK 

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

...

Code Block
languagejfx
titleNAPBridge implementering
public class NAPBridge {
        private JSObject bridge;

        /**
         * Transforming a JSON string into a NAPMessage and sending it to subscribers.
         * @param rawEventString
         */
        public void send(String rawEventString) {
            try {
                System.out.println(this.getClass().getName() + " send(): " + rawEventString);
                NAPMessage msg = objectMapper.readValue(rawEventString, NAPMessage.class);
                notifyListeners(msg);
            } catch (IOException ioException) {
                System.out.println(this.getClass().getName() + " " + ioException);
            }
        }

        /**
         * Sets the bridge to act as a callback.
         * @param bridge
         */
        public void setCallback(JSObject bridge) {
            System.out.println(this.getClass().getName() + " setCallBack(): " +  bridge);
            this.bridge = bridge;
        }
   }
}

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

...

Code Block
languagejfx
titleIndkommende NAP beskeder
private void handleBridgeCallBacks(NAPMessage napMessage) {
        System.out.println("Bridge got type NAPMessageType" + napMessage.getEvent().getNAPEventType());
        switch (napMessage.getEvent().getNAPEventType()) {
            case WebAppOpen:
                try {
                    WebApp webApp = this.getWebAppById(
                            Configuration.getInstance().getNapAdminUrl(this.environment),
                            FHIRResoureValueGetter.getWebAppId(napMessage),
                            this.base64EncodedSAMLToken
                    );
                    if (webApp != null) {
                        Platform.runLater(() -> this.webAppPane.openURL(webApp.getManifest().getUrl()));
                    }
                } catch (ConnectException e) {
                    System.err.println("Kunne ikke oprette forbindelse til serveren");
                } catch (Exception e) {
                    e.printStackTrace();
                }
                break;
            case PatientOpen:
                sendCurrentPatient(txfCPR.getText(), napMessage.getDate(), napMessage.getId());
                break;
            case SessionOpen:
                sendToken(napMessage);
                break;
            case SessionClose:
                sendSessionClosed(napMessage);
                break;
            case SessionError:
                sendSessionError(napMessage);
        }
    }
}


Når der skal sendes en NAP besked, kan der så gøres brug af bridgen. Call() tager imod en string, som angiver hvilken metode man vil kalde, her "handle", da det er den variable som SDK'et lytter på.  Metoden sender en string representation af et JSON objekt, her af typen NAPMessage.

Code Block
languagejfx
titleBrug af Nap Bridge
 if(napBridge.bridge != null) {
     this.napBridge.bridge.call("handle", eventRawJSONString);
 }

...

NAP Lobby Web

Når kommunikationen er opsat med SDK'erne, er det nu klart til at vise alle de projekter der er tildelt.

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

Start Nap lobby web på test

Start Nap admin

Derefter skal den ind i NAP'en og være som projekt. 

Inspiration kan bruges NAP Java host som simulere et LPS system. 

Dette gøres ved at få det WebView 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 URLNOTE: INTRODUKTION TIL VISIONER OG HVORDAN DET SKAL BRUGES.