- Stampa
Migliori pratiche per la creazione di app GxP
Gli ambienti GxP hanno requisiti unici che possono essere soddisfatti attraverso la creazione e la configurazione di Tulip App. Tulip dispone di una serie di best practice standardizzate per garantire la conformità, descritte qui.
In questo articolo troverete:
- Un elenco delle migliori pratiche e raccomandazioni per la creazione di app in un ambiente GxP.
- Informazioni su come implementare le best practice all'interno di Tulip Apps per garantire la conformità GXP, compresa la tracciabilità dell'audit-trail e l'integrità dei dati.
:::(Info) (NOTA)Questo articolo presuppone una conoscenza preliminare dei concetti di base di Tulip, quali variabili, tabelle e record di completamento. Si prega di fare riferimento agli articoli applicabili, se necessario:
Le migliori pratiche trattate in questo articolo:
- Genealogia di cattura e EDHR/eBR:
1.1 Usare i dati di completamento per creare un record storico immutabile.
1.2 Usare i dati di completamento per creare una tracciabilità completa quando si modificano le tabelle.
1.3 Utilizzare i dati di completamento per mostrare la tracciabilità completa delle modifiche alle voci storiche.
2. Migliori pratiche per la gestione dei parametri di processo (ad esempio, unità di misura, precisione decimale e convenzione di denominazione delle variabili)
3. Pratiche minime per la visualizzazione di informazioni standard su ogni fase
4. Acquisizione di firme elettroniche con widget di firma
5. Gestione delle eccezioni e abilitazione della revisione per eccezione
6. Lavorare con e gestire i timestamp Datetime
7. Abilitare la funzionalità "Pausa e ripresa" per le app di processo.
1. Acquisizione di record genealogici e storici: Utilizzare i dati di completamento per creare un record storico immutabile.
- I record della cronologia vengono compilati collegando un record della tabella Tulip (cioè una riga di una tabella) con i dati di completamento (voci/riga). Qualsiasi record di tabella Tulip incluso nei dati di completamento può essere usato per questo collegamento, quindi il record di tabella necessario per il record di cronologia sarà caricato nell'applicazione nello stesso momento in cui si verifica un completamento dell'applicazione. Assicurarsi di includere i completamenti dell'app nella logica di trigger quando si manipolano i dati dei record.
- Irecord della cronologia vengono compilati da più completamenti, pertanto le app devono essere "completate" nei punti del processo in cui i dati devono essere registrati. Pertanto, può essere necessario che un'applicazione venga completata più volte durante l'esecuzione. Si noti che il completamento di un'applicazione cancella le variabili non resistenti e questo deve essere considerato durante la progettazione dell'applicazione.
Acquisizione di record genealogici e storici: Utilizzare i dati di completamento per creare una tracciabilità completa quando si modificano le tabelle.
- Quando si lavora con i record di tabella, garantire la tracciabilità con i completamenti: Promemoria: La manipolazione dei dati nei record di tabella durante l'esecuzione dell'app avviene in tempo reale e non è legata al completamento dell'app. Per mantenere la contemporaneità dei dati, includere la manipolazione dei dati della tabella nella stessa sequenza di trigger del completamento dell'App.
Acquisizione di record di genealogia e storia: Utilizzare i dati di completamento per gestire la tracciabilità completa delle modifiche alle voci storiche.
- Le correzioni alle voci di Digital Record History possono essere effettuate solo aggiungendo nuovi dati di completamento. Non c'è modo di modificare intenzionalmente i valori in un record di completamento. Questo è intenzionale per garantire il mantenimento dei dati originali.
- Un modo semplice di pensare è che un record di completamento è una traccia di controllo dell'esecuzione di un'applicazione. I dati che sono già stati impegnati nel record di completamento vengono corretti con un'ulteriore immissione nel record di completamento.
Esempio di correzione implementata nelle AppCome effettuare la correzione: Eseguire nuovamente l'App o le fasi dell'App, con una variabile opzionale che definisce il record come "correzione".
- Creare una variabile "Tipo di record" a cui vengono assegnati valori standard come "Normale", "Correzione", ecc. che possono essere utilizzati per ordinare/filtrare il record di completamento.
- Nella maggior parte dei casi è sufficiente utilizzare le date acquisite per ordinare le voci di correzione, poiché si tratta di un ordine cronologico in cui la voce più recente è il valore valido.
2. Migliori pratiche per la gestione dei parametri di processo (ad esempio, unità di misura, precisione decimale e pratiche di denominazione delle variabili)
- Utilizzare variabili ausiliarie aggiuntive per salvare l'unità di misura dei dati di processo. Per i dati di processo e di produzione, è sempre importante specificare l'Unità di Misura (UOM), ad esempio °C, Kg, Litri, Ph, ecc.
- A tale scopo, è necessario utilizzare una variabile aggiuntiva (variabile ausiliaria) che può essere selezionata o che ha un valore statico.
- Le variabili di aiuto saranno salvate nel record di completamento.
- Utilizzare la logica e le espressioni dell'app Trigger per gestire la precisione decimale. Alcuni parametri di processo possono richiedere una precisione specifica, cioè un numero di cifre decimali. Questo deve essere gestito nell'applicazione attraverso la logica di trigger e le espressioni.
- Utilizzare una denominazione chiara delle variabili per evidenziare le variabili chiave. Parametri critici di processo (CPP), o Attributo critico di qualità (CQA)
- Alcuni parametri di processo devono essere definiti come parametri critici di processo (CPP) o attributi critici di qualità (CQA).
- Attualmente non esiste un modo per etichettare le variabili in Tulip, quindi il modo più semplice per farlo è aggiungere un prefisso o un suffisso ai nomi delle variabili. Ad esempio, nomi di variabili come "temperatura_CPP", "CQA_Assay B", ecc.
3. Informazioni minime standard da visualizzare su 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 viene elaborato nell'applicazione, ad esempio Batch, Ordine, Apparecchiatura, Strumento. In alcuni casi ci saranno più elementi.
- Nel layout di base dell'applicazione devono essere presenti i seguenti elementi.
- Le 'Info sull'applicazione / Nome dell'applicazione'.
- Le 'Info sull'app / Versione dell'app'.
- Le 'Informazioni sull'app / Utente connesso'.
- Le "Info app / Nome fase" (con caratteri di dimensioni importanti, poiché di solito il nome della fase fornisce un contesto di processo utile all'operatore).
4. Acquisizione di firme elettroniche con widget di firma
Utilizzare il titolo della firma o l'acquisizione/inserimento di variabili aggiuntive sul passaggio per dare un contesto alle firme. Ricordate che i requisiti della firma elettronica richiedono che una firma includa
- Per cosa si sta firmando? Il contesto della firma può essere descritto nel nome della fase di firma, ad esempio Lotto, Ordine, Apparecchiatura, ecc.
- Perché si firma? Utilizzare le variabili per inserire il motivo della firma sopra il widget della firma.
- Quando è stata firmata? La data e l'ora sono quelle in cui è stata apposta la firma. L'applicazione acquisisce automaticamente questi dati come dati di completamento quando il widget della firma viene completato.
Di seguito sono riportati alcuni modi consigliati per catturare il contesto della firma.
- Utilizzare il nome del passo per definire il motivo della firma elettronica.
- Inserire un gruppo di passi che richiedono una firma elettronica e includere il widget della firma come ultimo passo del gruppo.
- Utilizzare un'etichetta di testo o un elenco a discesa a selezione singola che descriva l'intento della firma.
- Creare un passo di riepilogo prima della firma per fornire all'utente il contesto per cui sta firmando.
5. Gestione delle eccezioni e abilitazione della revisione per eccezione
Per consentire la revisione delle eccezioni relative a un record di cronologia, è importante che si proceda come segue.
- Utilizzare una Variabile dell'applicazione per definire il tipo di record (ad esempio, normale, correzione, eccezione - vedere la sezione 1.3) per consentire di identificare facilmente le eccezioni.
- Utilizzare una Tabella per raccogliere le eccezioni da esaminare. Ogni eccezione (difetto, osservazione, ecc.) deve essere memorizzata come un singolo record in una tabella Tulip, includendo tutte le informazioni pertinenti (informazioni sull'eccezione, data/ora, applicazione, ordine/lotto, operatore, ecc.) Oltre a essere memorizzati nei dati di completamento, questi record possono essere collegati al lotto o all'ordine.
- Nella tabella delle eccezioni, includere una colonna che colleghi o faccia riferimento all'artefatto per il quale l'eccezione è stata rilevata. Ad esempio: lotto, materiale, apparecchiatura, ordine.
6. Lavorare e gestire i timestamp delle date
- Itimestamp nel record di completamento sono acquisiti in UTC con un offset per il fuso orario.
- La formattazione di data e ora può essere impostata a livello di istanza per tutte le applicazioni. Ciò avviene nell'opzione "Impostazioni/Data e ora".
- I formati di data e ora possono essere formattati nell'editor di espressioni. Quando si visualizza o si inserisce la data e l'ora, assicurarsi di visualizzarla in base a un formato coerente.
- I formati temporali GxP richiedono un formato non ambiguo, ad esempio "04-lug-2020".
- Utilizzare le espressioni per formattare la visualizzazione di data e ora nelle applicazioni e in Analytics.
- Le date possono essere formattate nel formato specificato utilizzando la funzione DATETIMETOTEXT nell'editor di espressioni.
7. Rendere le app di processo resistenti alle cancellazioni / Abilitare la funzionalità Pausa e Ripresa
I processi batch possono durare molte ore o molti giorni. Per consentire a un operatore di sospendere il lavoro su un batch e di riprendere da dove si era interrotto in un momento successivo, si consiglia di adottare le soluzioni descritte in "Funzionalità di pausa e ripresa".