Page History
...
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 | ||||
|---|---|---|---|---|
| ||||
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 | ||||
|---|---|---|---|---|
| ||||
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 | ||||
|---|---|---|---|---|
| ||||
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.