Le integrazioni personalizzate sono una funzione di Provet Cloud che consente di inviare richieste a risorse esterne dall'interno di Provet Cloud. Per ottenere l'accesso alle funzioni, contattare il supporto di Provet Cloud.
Le integrazioni personalizzate sono gestite in Impostazioni → Integrazioni → Integrazioni personalizzate.
Per aggiungere un'integrazione, utilizzare il pulsante blu '+Aggiungi'; per modificare un'integrazione, utilizzare il pulsante bianco con la penna sulla riga della tabella.
-
Nome - Specifica l'etichetta del pulsante visibile nell'interfaccia utente.
-
Pagina visibile - Specifica in quale pagina è visibile il pulsante. Ogni integrazione personalizzata può essere visibile solo su una pagina, ma la stessa configurazione può essere duplicata per più integrazioni personalizzate.
-
Azione - Specifica l'azione che verrà eseguita quando si fa clic sul pulsante.
-
Invia richiesta HTTP - Una richiesta viene pianificata in background e inviata utilizzando i server di Provet Cloud. Gli utenti non vedranno la pagina web, ma potranno vedere una notifica quando l'invio procede. La richiesta proviene dagli indirizzi IP in uscita di Provet Cloud, pertanto l'estremità ricevente deve essere aperta alle richieste esterne.
-
Apri in una nuova finestra - L'URL di destinazione viene aperto in una nuova finestra/scheda del browser.
-
Apri nel pannello laterale - L'URL di destinazione viene incorporato in Provet Cloud aprendo un pannello laterale sopra il contenuto della pagina e visualizzando la pagina come iframe. L'URL di destinazione deve supportare l'incorporazione (ad esempio, l'intestazione
X-Frame-Options
deve essere impostata correttamente).
-
-
Metodo HTTP - Specifica se la richiesta sarà inviata come richiesta GET, con il payload fornito come parametri nella stringa di query, o come richiesta POST, con il payload fornito come dati del modulo.
-
URL - L'URL di destinazione, completo di schema.
-
Nome del parametro - Nome del parametro utilizzato per fornire l'ID dell'oggetto corrente.
-
Abilitato - Consente di abilitare e disabilitare un'integrazione personalizzata. Le integrazioni personalizzate possono anche essere eliminate se non sono più necessarie.
-
Add verification hash - Abilita un hash di verifica nel payload, che può essere usato per verificare che la richiesta provenga dall'integrazione personalizzata.
-
Sale di verifica - Un segreto condiviso utilizzato per calcolare l'hash di verifica, richiesto solo quando l'hash di verifica è abilitato.
È possibile aggiungere un prefisso personalizzato al valore del parametro, specificando il nome del parametro in modo diverso. Normalmente, specificando il nome del parametro come "id" si otterrebbe una richiesta del tipo https://example.com/?id=1
. Tuttavia, se è richiesto un prefisso personalizzato davanti al valore ID effettivo, il nome del parametro può essere definito, ad esempio, come "id=client_", che invierà una richiesta https://example.com/?id=client_1
.
Alle richieste in background ("Invia richiesta HTTP") si possono anche assegnare valori statici arbitrari, che verranno aggiunti alle richieste ogni volta che vengono inviate. Questo può essere usato, ad esempio, per includere intestazioni di Autorizzazione nelle richieste.
Questa funzione non è implementata per le richieste in primo piano ("Apri in una nuova finestra", "Apri nel pannello laterale"). Anche le intestazioni inviate non vengono registrate.
Le richieste inviate in background ('Invia la richiesta HTTP') saranno registrate in un registro interno a scopo di verifica e audit. Ciò consente agli amministratori di verificare che tipo di richieste sono state inviate da chi e a che ora e di controllare il tipo di risposta che l'integrazione personalizzata ha restituito.
Il registro delle integrazioni personalizzate può essere visualizzato da Impostazioni → Integrazioni → Integrazioni personalizzate → Registro.
La visualizzazione del registro elenca tutte le richieste effettuate, a partire dalla più recente. Le informazioni di base sulle richieste saranno mostrate nell'elenco e si potrà accedere a ulteriori informazioni nella vista dettagliata facendo clic sul pulsante a forma di occhio sul lato destro di ogni riga.
La registrazione non viene eseguita sulle richieste in primo piano ("Apri in una nuova finestra", "Apri in un pannello laterale"), poiché è il browser a effettuare queste richieste.
Una volta aggiunte, le integrazioni personalizzate saranno visualizzate come pulsanti nelle pagine di destinazione. I pulsanti delle integrazioni personalizzate si distinguono facilmente dai pulsanti di Provet Cloud per il loro aspetto unico di colore marrone.
Se per una pagina è stata impostata una sola integrazione personalizzata, questa verrà resa come un normale pulsante, con il nome dell'integrazione personalizzata utilizzato come etichetta. Si veda il pulsante marrone "Attiva integrazione personalizzata" nell'immagine sottostante (pagina client).
Se a una pagina sono collegate più integrazioni personalizzate, le integrazioni personalizzate saranno invece rese come menu a discesa, sempre utilizzando lo stesso aspetto marrone per distinguerle. Le voci del menu utilizzeranno il nome dell'integrazione personalizzata come etichetta, proprio come i pulsanti singoli. Vedere l'immagine sottostante per un'illustrazione.
Le integrazioni personalizzate non inviano informazioni dettagliate sulla pagina attualmente visibile. Inviano invece solo l'ID dell'oggetto pertinente (ID cliente, ID paziente, ID fattura, ecc.) che può essere interrogato dall'API REST di Provet Cloud, in modo simile al funzionamento dei webhook.
Le integrazioni personalizzate non includono automaticamente le informazioni sulla pagina a cui sono registrate. Gli utenti devono utilizzare endpoint URL diversi per le diverse pagine (ad esempio integration.com/client/
per l'integrazione personalizzata della pagina del cliente e integration.com/patient/
per l'integrazione personalizzata della pagina del paziente) o, se ciò non è possibile, nomi di parametri diversi (ad esempio patient_id
per l'integrazione della pagina del paziente e client_id
per l'integrazione della pagina del cliente, se entrambi utilizzano lo stesso URL) e quindi distinguere sul lato dell'integrazione quale parametro è incluso nella richiesta. Per le richieste in background, si possono usare anche intestazioni personalizzate.
Inoltre, non vi è alcun riferimento all'ID Provet attivo. Se si sta creando un'integrazione condivisa tra più istanze Provet Cloud, si consiglia di aggiungere endpoint per ogni ID Provet (ad esempio integration.com/1234/client/
e integration.com/4321/client/
se l'integrazione sarà utilizzata da entrambe le istanze Provet Cloud 1234 e 4321). In questo caso, si raccomanda anche di usare gli hash di verifica per garantire che i dati provengano dall'istanza corretta, anche se c'è una configurazione errata con un URL di integrazione personalizzato. Per le richieste in background, è possibile utilizzare anche intestazioni personalizzate.
Se un'integrazione personalizzata è definita come azione "Invia richiesta HTTP", facendo clic sul pulsante dell'integrazione personalizzata si pianifica l'invio di una richiesta in background utilizzando i server worker di Provet Cloud. L'invio avverrà in modo asincrono e, sebbene di solito la richiesta venga effettuata quasi immediatamente, potrebbe esserci un ritardo a seconda della quantità di lavoro in corso sui server. La richiesta proviene dagli indirizzi IP in uscita di Provet Cloud.
Quando la richiesta è in fase di pianificazione, l'utente vedrà una notifica informativa nella parte superiore della pagina.
Se la richiesta viene gestita e completata senza che l'utente si allontani dalla pagina, gli può essere mostrata un'ulteriore notifica al completamento dell'attività.
Una notifica di successo viene mostrata se la richiesta viene inviata con successo e l'integrazione risponde con un codice di stato HTTP di successo (tra 200 e 299 incluso).
Tuttavia, se la richiesta non va a buon fine per qualsiasi motivo, verrà visualizzata una notifica di errore rossa con la dicitura "Richiesta di integrazione non riuscita" e un messaggio di errore più specifico tra le parentesi.
I possibili messaggi di errore al momento sono:
-
Errore backend - Si è verificato un errore sconosciuto sui server worker di Provet Cloud durante l'invio della richiesta. Potrebbe trattarsi di un errore nei server di Provet Cloud. Contattare il supporto di Provet Cloud per ulteriori informazioni.
-
Errore di connessione - La richiesta di pianificazione dell'invio fatta ai server di Provet Cloud non è andata a buon fine. Potrebbe trattarsi di un errore nella connessione dell'utente o di un problema con i server di Provet Cloud.
-
Errore dati - La richiesta di pianificazione dell'invio fatta ai server di Provet Cloud conteneva dati non validi. Questo suggerisce un problema in Provet Cloud.
-
Errore di integrazione - La richiesta è stata inviata correttamente, ma l'integrazione ha risposto con un codice di stato HTTP non corretto (inferiore a 200 o superiore a 299). Il log personalizzato dell'integrazione può essere usato per determinare il motivo se il fallimento è inaspettato.
Se un'integrazione personalizzata è definita come azione "Apri in una nuova finestra", facendo clic sul pulsante dell'integrazione personalizzata si aprirà l'URL di destinazione in una nuova finestra o, più comunemente con i browser moderni, in una nuova scheda. La pagina originale di Provet Cloud rimarrà aperta nella finestra/tab originale.
Se si utilizza un metodo di richiesta GET, gli utenti possono vedere le informazioni del payload visualizzate nella barra degli indirizzi del browser. Se gli utenti non devono vedere facilmente le informazioni sul payload trasmesse, si consiglia di utilizzare una richiesta POST.
Se un'integrazione personalizzata è definita come azione "Apri nel pannello laterale", facendo clic sul pulsante dell'integrazione personalizzata si recupera l'URL di destinazione all'interno del browser e lo si visualizza in un elemento iframe
all'interno di un pannello laterale che si apre in cima alla pagina corrente.
L'URL di destinazione deve supportare l'incorporazione tramite l'intestazione X-Frame-Options.
Le integrazioni personalizzate del cliente saranno visualizzate nella pagina del cliente sul lato destro, sopra la sezione Note quando si naviga in una qualsiasi delle schede del cliente ("Dettagli cliente", "Fatturazione", "Trattamenti", ecc.). Non viene visualizzato nelle schede dei pazienti. L'ID del cliente verrà inviato come parametro.
Allo stesso modo, le integrazioni personalizzate dei pazienti saranno visualizzate nella pagina del paziente sul lato destro, sopra la sezione Note quando si sfogliano le schede del paziente ("Dettagli paziente", "Storia", "Misure", ecc.). Non viene visualizzato nelle schede del cliente. L'ID del paziente verrà inviato come parametro.
Le integrazioni personalizzate per le fatture saranno visualizzate nelle pagine delle fatture (compresa la vendita al banco) nella barra degli strumenti inferiore. L'ID della fattura (da non confondere con il numero della fattura) verrà inviato come parametro.
Le integrazioni personalizzate per le consultazioni saranno visualizzate nella pagina della consultazione, sopra la sezione delle informazioni generali, sia per le consultazioni in corso che per quelle concluse. L'ID della consultazione sarà inviato come parametro.
Le integrazioni personalizzate del calendario degli appuntamenti saranno visualizzate sopra il calendario degli appuntamenti. L'ID della sede attiva della clinica sarà inviato come parametro.
Allo stesso modo, le integrazioni personalizzate del calendario dei turni saranno visualizzate sopra il calendario dei turni, sotto la selezione del tipo di turno e del modello di turno. L'ID della sede attiva della clinica verrà inviato come parametro.
Le integrazioni personalizzate per la diagnostica per immagini saranno visualizzate nella pagina di riferimento della diagnostica per immagini nelle barre degli strumenti superiori e inferiori. L'ID del referral di diagnostica per immagini verrà inviato come parametro.
Le integrazioni personalizzate dei promemoria saranno visualizzate nella barra degli strumenti di selezione della pagina dei promemoria quando uno o più promemoria sono selezionati nella tabella. È possibile scegliere e inviare più promemoria contemporaneamente. L'ID del promemoria per ogni promemoria selezionato verrà inviato come parametro.
Se esiste il rischio che soggetti esterni possano inviare richieste all'URL di destinazione ed è necessario sapere quali richieste provengono dall'integrazione personalizzata di Provet Cloud, è possibile utilizzare gli hash di verifica come ulteriore convalida. Se abilitato, alle richieste verrà aggiunto un parametro aggiuntivo chiamato "verification", che è un hash digest MD5 del timestamp e del sale di verifica.
Ad esempio, per verificare che l'hash di verifica sia valido in Python, si potrebbe scrivere una funzione come questa:
Quando si utilizza l'invio in background ("Invia richiesta HTTP"), il timestamp viene generato quando la richiesta viene effettivamente inviata. Tuttavia, quando si utilizza l'invio in primo piano ("Apri in una nuova finestra"), il timestamp viene generato quando viene caricata una pagina contenente il pulsante di integrazione personalizzato. Questo per generare l'hash di verifica sul lato server ed evitare di esporre il sale di verifica agli utenti. Gli sviluppatori di integrazioni personalizzate potrebbero dover considerare che gli utenti potrebbero passare un po' di tempo sulla pagina prima di fare clic sul pulsante dell'integrazione personalizzata.
Provet Cloud consente una quantità limitata di comunicazione bidirezionale con le integrazioni personalizzate aperte in primo piano utilizzando l'API Window.postMessage(). La finestra/tab che ha aperto l'integrazione personalizzata è disponibile tramite l'oggetto window.opener
e quindi è possibile inviare un messaggio con window.opener.postMessage(message)
, dove il messaggio è un comando valido riconosciuto da Provet Cloud.
Attualmente, l'unico comando valido è "reload", che esegue un ricaricamento completo della pagina sulla finestra/tab che ha aperto l'integrazione personalizzata. Questo può essere utile, ad esempio, se l'integrazione personalizzata aggiorna i dati di Provet Cloud tramite l'API REST e gli utenti devono vedere le ultime modifiche quando ritornano dall'integrazione personalizzata.
Aggiornato
Commenti
0 commenti
Accedi per aggiungere un commento.