- Stampa
Nozioni di base per la creazione di app GxP
Questo articolo vi fornirà le conoscenze di base per affrontare la creazione di applicazioni in ambienti GxP.
Questo articolo presuppone una conoscenza preliminare dei concetti di base di Tulip, quali variabili, tabelle e record di completamento.
Il linguaggio
Lo stile e il linguaggio delle applicazioni devono essere adeguati all'uso che se ne intende fare. Le procedure operative standard, le istruzioni di lavoro e i metodi dovrebbero essere scritti in uno stile imperativo.
Versione
Quando si pubblica un'applicazione, si raccomanda di descrivere nella sezione dei commenti la natura delle modifiche, ad esempio l'aggiornamento dell'interfaccia utente, la correzione di errori o altro, rispetto all'applicazione precedentemente pubblicata.
Informazioni standard da visualizzare in ogni fase
I seguenti elementi devono essere visualizzati in ogni fase per fornire all'utente il contesto appropriato:
- Il nome o l'ID univoco dell'elemento principale che l'App è utilizzata per elaborare. "L'articolo, ad esempio il lotto, l'ordine, l'apparecchiatura o lo strumento che viene utilizzato o elaborato. In alcuni casi potrebbero esserci più elementi. Nella maggior parte dei casi, questo dovrebbe essere realizzato creando o caricando un record di tabella contenente le informazioni all'inizio dell'applicazione.
- L'utente registrato
- La versione dell'applicazione
- Il nome della fase dell'applicazione
Si consiglia inoltre di avere un pulsante di disconnessione in tutti i passaggi che attiva l'azione "Disconnetti l'utente corrente".
Timestamp e formato della data
I timestamp nel record di completamento sono acquisiti in UTC con un offset per il fuso orario. La formattazione della data e dell'ora può essere impostata a livello di istanza per tutte le applicazioni. Ciò avviene nella sezione "Data e ora" del menu "Impostazioni" dell'istanza e deve essere configurato dal proprietario dell'account.
Acquisizione della firma elettronica con il widget Firma elettronica
Per rispettare le normative ER/ES (Electronic Records / Electronic Signatures), una firma deve fornire un contesto ai firmatari:
- "Cosa"
Contesto della firma, ad esempio lotto, ordine, attrezzatura, ecc.
- "Perché"
Il motivo della firma, ad esempio il rilascio di un ordine di processo.
Per le firme si raccomanda la seguente struttura:
- Raggruppare le fasi che richiedono una firma elettronica e includere il widget della firma elettronica nell'ultima fase del gruppo.
- Creare un passo di riepilogo, se applicabile, prima del widget che mostri tutti i dati rilevanti per fornire al firmatario il contesto della firma ("Cosa").
- Utilizzare il titolo del modulo, ad esempio "Firma per la ristampa dell'etichetta", e l'etichetta del nome utente, ad esempio "Supervisore", per definire il motivo della firma ("Perché").
Quando la firma viene inviata, Tulip registra automaticamente altre informazioni:
- "Chi" ha firmato il modulo
- "Quando" è stata apposta la firma
- Eventuali commenti aggiunti
È obbligatorio impegnare i dati correnti dell'App in un record di completamento immutabile. Questo può essere ottenuto in due modi:
- Utilizzando l'azione "Salva tutti i dati dell'App" in un trigger "Azione personalizzata" sul pulsante di invio del widget della firma.
- Completando l'applicazione, utilizzando l'impostazione standard "Completa applicazione" per il pulsante di invio o utilizzando un'azione "Completa applicazione" in un trigger "Azione personalizzata".
Azione Salva tutti i dati dell'app
L'azione "Salva tutti i dati dell'applicazione" salva i valori correnti di tutte le variabili dell'applicazione e i valori correnti dei campi di tutti i record della tabella caricati in un record di completamento dell'applicazione. I record di completamento sono immutabili e non possono essere cancellati.
Completamento dell'applicazione
Un completamento di app memorizza i dati nello stesso modo in cui lo fa l'azione "Salva tutti i dati dell'app". Inoltre, un completamento dell'app ripristina tutte le variabili al loro valore predefinito, ma quelle che hanno l'opzione "cancella al completamento" è disattivata. Inoltre, tutti i segnaposto dei record di tabella vengono cancellati. Dopo il completamento di un'applicazione, è possibile riavviare la stessa applicazione dall'inizio o procedere a un passo specifico all'interno della stessa applicazione o di un'altra applicazione. Questo può essere configurato nella "transizione" utilizzata per il completamento.
Annullamento dell'app
L'annullamento di un'app è identico al completamento di un'app, ma tutte le variabili vengono ripristinate al loro valore predefinito.
Inizializzazione automatica dell'app
Per un'applicazione che deve essere completata più volte durante l'esecuzione, ad esempio a causa di firme multiple, si raccomanda di memorizzare il suo contesto prima di ogni completamento, quindi l'applicazione può essere configurata per ripristinare automaticamente il suo contesto dopo il riavvio. Il contesto può essere l'ID dei record della tabella, ad esempio il lotto corrente, e/o delle variabili, ad esempio un contatore. Si consiglia di memorizzare il contesto dell'App in una tabella utilizzando "App Info: Nome stazione" come ID del record. Questo record può essere caricato al (ri)avvio dell'App utilizzando un trigger "App avviata". Lo stesso approccio può essere utilizzato per ottenere una transizione senza soluzione di continuità a un'altra App.
Principi simili possono essere applicati per riprendere l'esecuzione dell'app dopo la sua cancellazione, ad esempio a causa di un logout automatico o della selezione di "Riavvia" nel menu del lettore. Per questi casi d'uso, si consiglia di memorizzare un nome di passo come informazione di contesto aggiuntiva per l'apertura dell'App dopo il riavvio. Questo può essere il nome dell'ultima fase visualizzata o una fase specifica che deve essere aperta per il recupero.
Eccezioni e abilitazione della revisione per eccezione
Si raccomanda l'uso di una Tabella Tulip per raccogliere tutte le eccezioni che si verificano durante l'esecuzione dell'applicazione. Ogni eccezione (difetto, osservazione, ecc.) deve essere memorizzata come un singolo record nella tabella Tulip, includendo tutte le informazioni pertinenti sull'eccezione, ad esempio tipo, descrizione, data/ora, applicazione, operatore, ecc. Inoltre, questo record deve essere collegato, tramite la funzione "Record collegati", ai record di tutti gli artefatti correlati all'eccezione, cioè lotto, ordine, materiale, attrezzatura, stanza, ecc.
Record, correzione dei record, cronologia dei record
Si consiglia di memorizzare i dati GxP rilevanti come record nelle tabelle Tulip con riferimento ai relativi artefatti, ad esempio lotto, ordine, materiale, attrezzatura, locale, ecc.
Si raccomanda di correggere i dati rilevanti per le GxP all'interno del record originale, poiché qualsiasi modifica si rifletterà nella cronologia del record. La correzione deve essere presentata con un modulo di firma.
Per facilitare il recupero dei record, si raccomanda di assegnare un ID univoco e sistematico per tutte le voci, ad esempio "-".
Cronologia dei record
Come descritto in precedenza, i valori delle variabili vengono memorizzati in un record di completamento al momento del completamento o dell'annullamento dell'applicazione. Al contrario, la manipolazione dei dati di una tabella avviene in tempo reale. Ogni modifica a qualsiasi campo di un record di tabella viene automaticamente registrata da Tulip con informazioni contestuali (utente, app, versione dell'app, stazione, timestamp).
Ogni record della tabella Tulip ha una cronologia dei record. Questa cronologia mostra tutte le modifiche registrate, comprese le informazioni contestuali (utente, app, versione dell'app, stazione, timestamp).
Inoltre, la cronologia dei record mostrerà i dati di qualsiasi completamento o cancellazione di app in cui il record è incluso, cioè è stato caricato al momento del completamento/annullamento. Ciò include tutte le firme elettroniche registrate in tali completamenti/annullamenti. Le firme saranno visualizzate nella cronologia dei record in base al timestamp di quando sono state eseguite. Tutti gli altri dati di completamento saranno visualizzati con la data e l'ora del completamento/annullamento.