Le integrazioni personalizzate sono una funzione di Provet che consente di inviare richieste a risorse esterne direttamente da Provet. Per ottenere l’accesso a questa funzione, contattare l'assistenza Provet.
Gestione
Gestisci le integrazioni personalizzate in Impostazioni > Integrazioni > Integrazioni personalizzate.
Per aggiungere un’integrazione, seleziona il pulsante Aggiungi.
Per modificare un’integrazione, seleziona il pulsante pen nella riga della tabella.
Impostazioni
Campo | Descrizione |
Nome | Specifica l’etichetta del pulsante visibile nell’interfaccia utente. |
Specifica in quale pagina è visibile il pulsante. Ogni integrazione personalizzata può essere visibile solo in una pagina, ma la stessa configurazione può essere duplicata. | |
Azione | Specifica quale azione verrà eseguita quando viene selezionato il pulsante. |
Metodo HTTP | Specifica se la richiesta verrà inviata come richiesta GET (payload fornito come parametri nella stringa di query) oppure come richiesta POST (payload fornito come dati del modulo). |
URL | L’URL di destinazione, completo di schema. |
Nome parametrico | Il 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. |
Verifica bloccata | Un segreto condiviso utilizzato per calcolare l’hash di verifica. Richiesto quando l’hash di verifica è abilitato. |
Opzioni di configurazione
Aggiungi hash di verifica: abilita un hash di verifica nel payload che può essere usato per verificare che la richiesta provenga dall’integrazione personalizzata.
Includere il payload nell’hash di verifica: questa opzione ricalcola l’hash di verifica usando l’intero payload, inclusi ID utente e ID cliente.
Aggiungi informazioni sull'organizzazione e sul reparto: questa opzione include automaticamente le informazioni necessarie sull’organizzazione e sul reparto. Provet includerà questi parametri nella richiesta: nome Provet (organizzazione di base), ID Provet (ID organizzazione prodotto) e ID reparto.
Aggiunta di un prefisso al valore del parametro
È possibile aggiungere un prefisso personalizzato al valore del parametro specificando il nome del parametro in modo diverso.
Ad esempio, se definisci il nome parametrico come 'id=client_', invierà una richiesta come https://example.com/?id=client_1.
Intestazioni
Le richieste in background ('Invia richiesta HTTP') possono essere corredate da valori statici arbitrari che verranno aggiunti alle richieste.
Può essere utilizzato per includere intestazioni Authorization nelle richieste.
Questa funzione non è implementata per le richieste in primo piano ('Aprire in una nuova scheda', 'Apri nel pannello laterale'). Le intestazioni inviate non vengono nemmeno registrate.
informazioni sul carico utile
La schermata di impostazioni mostra un elenco di chiavi e valori del payload inviati con la richiesta. Questo elenco si aggiorna quando le impostazioni vengono modificate.
Tipi di azione
1. Invia richiesta HTTP
Una richiesta viene pianificata in background e inviata usando i server di Provet. Gli utenti non vedranno la pagina web, ma potrebbero vedere una notifica mentre l’invio è in corso.
La richiesta provenirà dagli indirizzi IP in uscita di Provet.
L’invio avviene in modo asincrono e potrebbe esserci un ritardo in base alla quantità di lavoro attualmente presente sui server.
Vedrai una notifica informativa nella parte superiore della pagina quando la richiesta viene pianificata.
Viene mostrata una notifica di successo se la richiesta viene inviata correttamente e l’integrazione risponde con un codice di stato HTTP di successo (tra 200 e 299, incluso).
Se la richiesta non va a buon fine, verrà visualizzata una notifica di errore con il messaggio 'Integration request failed', e tra parentesi un messaggio di errore più specifico.
Messaggio errore | Descrizione |
Errore backend | Si è verificato un errore sconosciuto sui server worker di Provet. Per ulteriori informazioni, contattare l'assistenza Provet. |
Errore di connessione | Non è stato possibile inviare la richiesta di pianificazione dell’invio. |
Errore nei dati | La richiesta di pianificazione dell’invio conteneva dati non validi. |
Errore di integrazione | La richiesta è stata inviata correttamente, ma l’integrazione ha risposto con un codice di stato HTTP non di successo (inferiore a 200 o superiore a 299). |
2. Apri in una nuova scheda
L’URL di destinazione viene aperto in una nuova finestra o in una nuova scheda del browser.
Se viene utilizzata una richiesta GET, gli utenti possono visualizzare le informazioni sul carico utile mostrate nella barra degli indirizzi del browser.
3. Apri nel pannello laterale
L’URL di destinazione viene integrato in Provet aprendo un pannello laterale sopra il contenuto della pagina e visualizzando la pagina come iframe.
L’URL di destinazione deve supportare l’incorporamento (l’intestazione X-Frame-Options deve essere impostata correttamente).
Utilizzo
Le integrazioni personalizzate vengono visualizzate come pulsanti nelle pagine di destinazione.
Se per una pagina è configurata solo un’integrazione, viene visualizzata come un pulsante normale.
Se una pagina ha più integrazioni, vengono visualizzate come menu a discesa.
Le integrazioni personalizzate inviano solo l’ID dell’oggetto rilevante (ID cliente, ID Paziente, ID Fattura, ecc.) che può essere interrogato tramite l’API REST di Provet.
Pagina | Posizione pulsante | ID inviato come parametro |
Cliente | Sul lato destro, sopra la sezione Note (non nelle schede del paziente). | ID cliente |
Paziente | Sul lato destro, sopra la sezione Note (non nelle schede del cliente). | ID Paziente |
Fattura | Nella barra degli strumenti inferiore delle pagine della fattura (incluse le pagine di vendita al banco). | ID Fattura (non il numero della fattura) |
Visita | Sopra la sezione info generiche, sia per le consulenze in corso che per quelle terminato. | ID Consultazione |
Calendario appuntamenti | In alto nel calendario degli appuntamenti. | ID sede clinica attiva |
Turni | In alto nel calendario dei turni. | ID sede clinica attiva |
Imaging Diagnostico | Nella pagina di Referto Imaging Diagnostico, nelle barre degli strumenti in alto e in basso. | ID referto Imaging Diagnostico |
Promemoria | Nella barra degli strumenti di selezione nella pagina Promemoria, quando è selezionato uno o più promemoria. | ID Promemoria per ogni promemoria selezionato |
Registro
Le richieste inviate in background ('Invia richiesta HTTP') vengono registrate in un registro interno per la verifica e l’audit.
Vai in Impostazioni > Integrazioni > Integrazioni personalizzate > Registro.
La vista del registro elenca tutte le richieste effettuate, a partire da quella più recente.
Visualizza altre informazioni nella vista dettagli selezionando il pulsante a forma di occhio sulla destra di ogni riga.
Nota: la registrazione non viene eseguita per le richieste in primo piano ('Aprire in una nuova scheda', 'Apri nel pannello laterale').
Verifica bloccata & hash
L’opzione "Verifica bloccata" è visibile solo se è selezionato "Aggiungi hash di verifica". In aggiunta, "Includere il payload nell’hash di verifica" viene visualizzata anche quando è selezionato "Add verification hash is selected".
In base alla combinazione di autorizzazioni, l’hash di verifica viene calcolato come segue:
1. Verifica bloccata abilitata, "include payload in verifica option" disabilitata -> hash calcolato come:Verifica hash MD5 di verifica esadecimale, ad es. "4e531ee13aa16886db72bc1621206d2f". L'hash viene generato aggiungendo il sale di verifica dopo il timestamp incluso ("2018-07-15T09:12:54+00:00verifica bloccata"). [string]2. Verifica bloccata abilitata, "include payload in verifica option" abilitata, "Add informazioni sull'organizzazione e sul reparto" DISABILITATO -> hash calcolato come:Verifica hash MD5 di verifica esadecimale, ad es. "23ae5385b3862a571f1b5d6f6b469b1c". L'hash viene calcolato con: "<timestamp><salt><parameter_name><object_id>user_id<user_id>" ("2018-07-15T09:12:54+00:00verifica bloccata"patient_id1234user_id56). [string]3. Verifica bloccata abilitata, "include payload in verifica option" abilitata, "Add informazioni sull'organizzazione e sul reparto" ABILITATO -> hash calcolato come:Verifica hash MD5 di verifica esadecimale, ad es. "163049a017bb405d4bfec754810c9838". L'hash viene calcolato con: "<timestamp><salt><parameter_name><object_id>user_id<user_id>provet_env<provet_env>provet_id<provet_id>department_id<department_id>" ("2018-07-15T09:12:54+00:00verifica bloccata"patient_id1234user_id56provet_envenvprovet_id12345department_id12"). [string]Gli hash di verifica possono essere usati come ulteriore validazione per verificare quali richieste provengono dall’integrazione personalizzata di Provet.
Quando è abilitato, viene aggiunto un parametro aggiuntivo chiamato "verification" alle richieste.
Questo parametro è un digest hash MD5 del timestamp e della verifica bloccata.
Per l’invio in background, il timestamp viene generato quando la richiesta viene effettivamente inviata.
Per l’invio in primo piano, il timestamp viene generato quando viene caricato una pagina che contiene il pulsante dell’integrazione personalizzata.
Ad esempio, per verificare che l’hash di verifica sia valido in Python, si potrebbe scrivere una funzione come questa:
from hashlib import md5VERIFICA_SALE = "My custom verification salt"def is_verification_hash_valid(parameters): hasher = md5() hasher.update(parameters.timestamp.encode("utf8")) hasher.update(VERIFICA_SALE.encode("utf8")) return hasher.hexdigest() == parameters.verificationComunicazione bidirezionale con Provet
Provet consente una quantità limitata di comunicazione bidirezionale con le integrazioni personalizzate aperte in primo piano utilizzando l’API Window.postMessage().
L’unico comando valido è "reload".
function refreshProvetCloud() { window.opener.postMessage("reload","*");}Questo comando esegue un ricaricamento completo della pagina nella finestra o scheda che ha aperto l’integrazione personalizzata.
Può essere utile se l’integrazione personalizzata aggiorna i dati di Provet tramite l’API REST.
