Computervalidierung in der Pharmaindustrie

Als Computervalidierung wird das dokumentierte Testen von Software bzw eines Computersystems bezeichnet, das in zahlreichen Industriezweigen notwendig ist. Vorallem, wenn diese Industriezweige einer behördlichen Überwachung unterliegen muss bewiesen werden, dass die eingesetzten Computerprogramme einwandfrei funktionieren. Ein Beispiel sind Computeranwendungen in der Pharmaindustrie. Ingenieure oder andere Naturwissenschaftler werden eingesetzt, um die Software auf ihre Praxistauglichkeit und Verlässlichkeit zu testen. Die Computervalidierung ist also zunächst ein formaler Prozess, und muss in einer streng kontrollierten und regulierten Umgebung stattfinden. Ein Computer, welcher in einem Labor betrieben werden soll, zum Beispiel um Messdaten auszuwerten, muss mit der gesamten Infrastruktur validiert werden – dies ist vorallem dann unerlässlich,  wenn das Endprodukt (z. B. die produzierten Arzneimittel) von der Qualität der Messdaten abhängt. Dazu muss der zuständigen Arzneimittelbehörde (FDA in den USA und EMEA in Europa) nachvollziehbar nachgewiesen werden, dass das Computersystem korrekt funktioniert und für den Zweck für den es eingesetzt wird geeignet ist.

Nicht auszudenken, eine Computersoftware würde aus einem Messverfahren stets falsche Resultate berechnen und anzeigen. Gerade dies wird durch eine Computer Validierung verhindert. Je nach Industriezweig ist daher als Voraussetzung für die Position des Computervalidierungsbeauftragten bzw. CSV-Managers ein abgeschlossenes Hochschulstudium im Bereich der Informatik, Chemie, Bioinformatik oder Biotechnologie nötig. Meist ist innerhalb eines Konzerns ein Teams von Experten für die Computer oder Excel Validierung zuständig. Dadurch hat das  Unternehmen die Möglichkeit, die Validierung seiner IT-Systeme über deren gesamten Lebenszyklus zu koordinieren. Auch hier gilt: Automatisierte Systeme, die die Produktsicherheit und Produktqualität von Arzneimitteln beeinflussen, müssen GMP-Regularien und somit zahlreiche Anforderungen erfüllen. Sie müssen validiert werden.

Automatisierte Systeme müssen also gemäß US und EU Regulatorien geprüft und validiert werden. Neben den zu berücksichtigenden, bestehenden Regulatorien (GAMP, 21 CRF Part 11, Annex 11) müssen die Computersysteme bzw. das Validierungsprozedere gemäß den Forderungen von nationalen Behörden an aktuelle Leitlinien und deren Änderungen angepasst werden. Für eine erfolgreiche Computer Validierung sind sowohl gute GxP Validierungskenntnisse notwendig, als auch eine langjährige Erfahrung im Bereich IT oder Automatisierungssyteme. Ein Spezialgebiet der CSV ist die Excel Validierung. Da im Tagesgeschäft der Pharmaindustrie flexible und schnelle Kalkulationen an vielen Einsatzorten mit Microsoft Excel durchgeführt werden, müssen auch die dort zum Einsatz kommenden Spreadsheets validiert werden. Der Schlüssel zum Erfolg liegt auch hier in einer maßgeschneiderten Computer Validierung und der konsequenten Anwendung der so genannten „Risk based Approach“ Methodik. Dokumentierte Maßnahmen und erfolgreiche Tests reduzieren das potentielle Risiko und geben den Computersystemen eine vertrauenswürdige Basis. Mit Abschluss der Validierung ist die Inspektionssicherheit gegeben. Viel wichtiger dabei ist jedoch das gewonnene Vertrauen und die Gewissheit, dass kritische Daten sicher erzeugt, bearbeitet und beherrscht werden.

Excel alle Kommentare ausblenden

Excel alle Kommentare ausblenden
Heute erneut ein Code Schnipsel, der obgleich er ziemlich hilfreich sein kann, rel. wenig mit Computer Validierung zu tun hat.

Markiert und kopiert (Strg+C) man Excel Tabellen und fügt sie in ein Word Dokument ein (Strg+V) stören oft die im Excel angezeigten roten (Kommentare) und grünen (Hinweise) “Eckchen” in div. Zellen der Tabelle, denn diese sollen in aller Regel später nicht im Word Dokument auftauchen.

Statt diese Kommentare und Hinweise nun in Excel manuell einzelnen auszublenden oder zu löschen, nimmt dieses Makro einem die Arbeit ab (auch die Zellfarbe wird hierbei auf transparent gesetzt):

Sub toreport()

‘ Zellfarbe überall auf transparent setzen

Cells.Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range(“A1″).Select


‘ Alle Kommentare löschen

Cells.Select
Selection.ClearComments


‘ Alle Fehlermeldungen und Warnungen ausblenden

With Application.ErrorCheckingOptions
.EvaluateToError = False
.TextDate = False
.NumberAsText = False
.InconsistentFormula = False
.OmittedCells = False
.UnlockedFormulaCells = False
.EmptyCellReferences = False
.ListDataValidation = False
.InconsistentTableFormula = False
End With

Range(“A1″).Select
End Sub

(Umfangreicher) Excel Audit Trail

Excel Audit Trail Teil II
Die Unzulänglichkeiten des einfachen Audit Trails und die Tatsache, dass dieser relativ leicht auszuhebeln ist, haben mich vor einige Zeit dazu bewogen einen Programmierer mit der Entwicklung einer ausgereifteren Version zu beauftragen. Das Ergebnis möchte ich hier vorstellen und zum Download anbieten.

Neben dem Loggen von Neueingaben werden bei diesem Excel Audit Trail Änderungen des Zellinhalts genauso registriert wie das Löschen desselben.

Darüberhinaus werden Aktionen wie “Drucken”, “Speichern” und “Speichern unter” der Datei registriert und aufgezeichnet.

Ausserdem gibt es die Möglichkeit bei jedem Speichern oder Drucken eine Backup Kopie auf einem FTP-Server oder in einem Unterverzeichnis des Netzwerks ab zu legen.

Ein weiteres integriertes Feature ist ein SHA1 verschlüsselter Fingerabdruck, der in der Fusszeile des Dokuments ausgegeben wird und sowohl vom Datum als auch vom Inhalt eines definierten Zellbereichs abhängt. Dieser Fingerabdruck soll (derzeit) eine mögliche Herangehensweise an electronic signatures / elektronische Unterschriften innerhalb von MS Excel demonstrieren und (später) evtl. mit einem entsprechenden Button “digital signieren” erzeugt werden.

Ändert ein Benutzer nach dem Ausdrucken oder (später signieren der Datei) eine Zelle des überwachten Zellbereichs und druckt die entsprechende Tabelle anschliessend erneut aus, erkennt man an diesem Fingerabdruck auf einen Blick, dass sich elektronische gespeicherte (bzw. signierte Datei (z.B. das beim Drucken unter dem SHA1-Code abgelegte Backup) vom Papierausdruck unterscheidet.

Ich möchte natürlich auch hier das generelle Problem nicht leugnen, dass die in diesem Beitrag vorgestellte Lösung von Benutzern mit ausreichend guten VBA-Kenntnissen umgangen werden kann (was prinzipiell aber auf sämtliche Makro-Lösungen zutrifft).

Dennoch möchte ich die derzeitige Version des Excel Audit Trails hier zum Download anbieten. Bei einer Verwendung der Datei oder Teilen davon würde ich mich über einen Kommentar unter diesem Beitrag der Einsatzort und ggf. erste Erfahrungen beschreibt sehr freuen.

Download Excel Audit Trail Makro

EU GMP-Leitfaden Annex 11 deutsch

Annex 11 deutsch
In dieser Rubrik möchte ich Richtlinien und Gesetze vorstellen, die man bei der Validierung computergestützter Systeme (also auch bei der Excel Validierung) berücksichtigen sollte.

In Europa wichtig ist der Annex 11 des EU GMP-Leitfadens dessen deutsche Übersetzung hier kostenlos zum Download angeboten wird: (Annex 11 deutsch: Annex 11 -deutsch)

In diesem Dokument erhält der Validierungsbeauftragte (oder der System Owner) eine Anleitung für die Auslegung der Grundsätze der Guten Herstellungspraxis (GMP) in Hinblick auf den Einsatz computergestützter Systeme.

Neben allgemeinen Tipps z.B. bezüglich Risikobewertung von IT Anwendungen (Stichwort risikobasierter Ansatz) werden auch sehr konkrete Themen wie z.B. die Notwendigkeit von Audit Trails oder elektronischer Unterschriften behandelt.

Excel gewichtete lineare Regression

Excel gewichtete lineare Regression
Excel kennt von Haus aus diverse Regressionsverfahren (exponentiell, logarithmisch, etc), nicht jedoch die gewichtete lineare Regression, wie sie z.B. im Qualitätskontrolllabor desöfteren vorkommt.

Da mir diese Tatsache in der Vergangenheit bereits Kopfzerbrechen bereitet hat, möchte ich hier eine “handgestrickte” Lösung für dieses Problem vorstellen, auch wenn dieses Thema relativ wenig mit dem eigentlichen CSV-Fokus dieses Blog zu tun hat:

Hat man verinnerlicht, wie lineare Regression bzw. das Anzeigen einer Ausgleichsgeraden in Excel mathematisch funktioniert, weiss man, dass es bei gegebenen Wertepaaren (Datenpunkten) darum geht, eine Ausgleichsgeraden so legen, dass die entstehenden Fehlerquadrate (yWert-yAusgleichsgerade) minimal werden.

Nun könnte man also (unendlich) viele verschiedene Ausgleichsgeraden (jede mit definierter Steigung und Achsenabschnitt) durch die Datenpunkte im Diagramm legen, jeweils die Fehlerquadrate berechnen um so die optimale Ausgleichsgerade zu finden.

Könnte man, muss man aber nicht!

Excel bring für derartige Fleissarbeit ein nettes kleines AddIn namens Solver mit. Der Solver variiert den Inhalt einer oder mehrerer Zellen, bis eine Zielzelle einen definierten Wert (oder wie hier den minimalen Wert) annimmt. In unserem Fall variiert Solver also die Steigung und den Achsenabschnitt fiktiver Ausgleichsgeraden solange, bis die Summer der berechneten Fehlerquadrate den minimalen Wert annimmt.

Das Beste daran: Excel benötigt dafür nur wenige Sekunden:

gewichtete_regression

Genug der Vorrede, mit Hilfe des angehängten Files könnten Sie es selbst testen:

gewichtete lineare regression

Einfach in die gelb hervorgehobenen Zellen einige Wertepaare eintragen und den Solver mittels Schaltfläche wirbeln lassen.

Das funktioniert, wie im File demonstriert, nicht nur im Fall der linearen ungewichteten Regression sondern auch im komplexeren Fall einer (wie auch immer) gewichteten Regression. Hier werden einfacj die Fehlerquadrate durch y (1/y gewichtet) bzw y2 (1/y2 gewichtet) dividiert (vgl. Zellen C14:C18 bzw D14:D18).

P.S.: Zur Nutzung dieses Files muss das Excel-AddIn Solver installiert sein (standardmässig ist dies oft nicht der Fall, ggf kann der IT-Admin helfen).

Excel alle Formeln drucken bzw. auflisten

Excel alle Formeln drucken
Ein äusserst hilfreicher Bestandteil der (Papier-)Validierungsunterlagen von Excel Spreadsheets ist meiner Meinung nach eine ausgedruckte Übersicht der verwendeten Formeln. Das untenstehende Makro erledigt diesen ansonsten sehr mühsamen Job:

Option Explicit

Sub ListAllFormulas()

Dim sht As Worksheet
Dim shtName
Dim myRng As Range
Dim newRng As Range
Dim c As Range

ReTry:
shtName = Application.InputBox("Choose a name for the new sheet to list all formulas.", "New Sheet Name") 'the user decides the new sheet name
If shtName = False Then Exit Sub 'exit if user clicks Cancel

On Error Resume Next
Set sht = Sheets(shtName) 'check if the sheet exists
If Not sht Is Nothing Then 'if so, send message and return to input box
MsgBox "This sheet already exists"
Err.Clear 'clear error
Set sht = Nothing 'reset sht for next test
GoTo ReTry 'loop to input box
End If

Worksheets.Add.Move after:=Worksheets(Worksheets.Count) 'adds a new sheet at the end
Application.ScreenUpdating = False
With ActiveSheet 'the new sheet is automatically the activesheet
.Range("A1").Value = "Sheet Name" 'puts a heading in cell B1
.Range("B1").Value = "Cell Address" 'puts a heading in cell C1
.Range("C1").Value = "Formula" 'puts a heading in cell A1

.Name = shtName 'names the new sheet from InputBox
End With

For Each sht In ActiveWorkbook.Worksheets 'loop through the sheets in the workbook
If sht.Name shtName Then 'exclude the sheet just created
Set myRng = sht.UsedRange 'limit the search to the UsedRange
On Error Resume Next 'in case there are no formulas
Set newRng = myRng.SpecialCells(xlCellTypeFormulas) 'use SpecialCells to reduce looping further
For Each c In newRng 'loop through the SpecialCells only
Sheets(shtName).Range("C65536").End(xlUp).Offset(1, 0).Value = Mid(c.Formula, 2, (Len(c.Formula)))
'places the formula minus the '=' sign in column C
Sheets(shtName).Range("A65536").End(xlUp).Offset(1, 0).Value = sht.Name
'places the sheet name containing the formula in column A
Sheets(shtName).Range("B65536").End(xlUp).Offset(1, 0).Value = Application.WorksheetFunction.Substitute(c.Address, "$", "")
'places the cell address, minus the "$" signs, containing the formula in column B
Next c
End If
Next sht
Sheets(shtName).Activate 'make the new sheet the activesheet
ActiveSheet.Columns("A:C").AutoFit 'autofit the data
Application.ScreenUpdating = True
End Sub

Excel und signifikante Stellen

Excel signifikante Stellen
Heute ein Post, der nur am Rande mit CSV zu tun hat. Als Naturwissenschaftler hat mich lange gestört, dass man Excel zwar über das Zahlenformat beibringen kann eine bestimmte Anzahl an Nachkommastellen anzuzeigen, dass Redmond es aber leider nicht für nötig hält, eine vergleichbare Funktion auf Basis der signifikanten Stellen anzubieten (abgesehen von der unhandlichen Schreibweise als 10er Potenzen).

Wie so oft: Ein Makro schafft Abhilfe. Hier ein Code-Schnipsel der bei Ausführung im markierten Bereich für eine einheitliche Anzahl an Nachkommastellen sorgt.

Sub test()
Dim i, anzNach, splat, zeil, anzZeil, nZeil, soll As Integer
Dim tmp As String
Dim zustd As String
soll = 3 'die soll-Anzahl der signifikanten stellen
zeil = Selection.Row
spalt = Selection.Column
anzZeil = Selection.Count
For i = 1 To anzZeil
nZeil = zeil + i - 1
tmp = Cells(nZeil, spalt)
If tmp < 0 Then tmp = tmp * (-1)
If tmp < 1 Then
Z = -1
Do While tmp < 1
Z = Z + 1
tmp = tmp * 10
Loop
anzNach = soll + Z
Else
anzNach = soll - Len(Split(tmp, ".")(0))
End If
If anzNach < 1 Then
Cells(nZeil, spalt).NumberFormat = "?0"
Else
Cells(nZeil, spalt).NumberFormat = "?0." & String(CLng(anzNach), "0")
End If
Next i
End Sub

Speziell: Im vielen Laboren sind “intelligente” signifikante Stellen erstrebenswert. Während 0.12345 zu 0.123 werden soll, wäre ein “Kürzen” von z.B. HPLC-Count-Werten von 123456789 auf 123000000 verheerend. Obiges Script berücksichtigt dies und “kürzt” nur hinter dem Komma…

(Sehr) einfacher Excel Audit Trail

Excel Audit Trail Teil 1
Im ersten echten Post dieser Kategorie möchte ich Ihnen eine sehr einfache Möglichkeit vorstellen einen (rudimentären) Excel Audit Trail per Makro zu realisieren.

Per Makro wird ein Bereich innerhalb des Tabellenblatts definiert (im Beispiel die Spalten A-J), der überwacht werden soll. Anschliessend werden Änderungen in einer Zelle dieses Bereichs geloggt (Im Beispiel in Spalte K und L). Hierbei wird in Spalte K das Änderungsdatum, in Spalte L der Benutzername des Benutzers ausgegeben der diese Änderung vorgenommen hat. Der Quelltext hierzu sieht folgendermassen aus:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rC As Range
If Intersect(Target, Range("A:J")) Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each rC In Target.Cells
Range("K" & rC.Row) = Now() ' Zeit
Range("L" & rC.Row) = Environ("username") ' Benutzer
Next rC
Application.EnableEvents = True
End Sub

Selbstverständlich kann dieser Audit Trail von Benutzern mit VBA-Kenntnissen umgangen/ausghebelt werden. Derart “böswillige” Absichten sollten in einer SOP berücksichtig werden…

Beispieldatei: Einfacher Audit Trail mit Excel

Auf den meisten Systemen gelangen Sie mit der Tastenkombination ALT/F11 zur Quelltextansicht der in der Datei enthaltenen Makros…

Excel Audit-Trail

Ein grundsätzliches Problem bei der Verwendung von Microsoft Excel ist, dass in einem Spreadsheet vorgenommenen Änderungen standardmäßig nicht rückverfolgbar sind. Wird der in einer Zelle enthaltene Wert überschrieben, ist der ursprüngliche Inhalt dieser Zelle verloren. Ebenso ist nicht nachvollziehbar, ob der ursprüngliche Autor oder ein anderer Nutzer die entsprechende Zelle verändert hat. Beide Tatsachen sind unter GxP Gesichtspunkten echte Probleme, derer man sich als Validierungsbeauftragter für Excel-Sheets stellen muss.

In den folgende Posts möchte ich einige Denkanstöße geben und Lösungen aufzeigen wie man einen Audit Trail mit Excel verwirklichen könnte.

Validierung von Excel-Sheets

Excel Validierung
Durch meine Leidenschaft für IT und EDV bin ich im Rahmen meiner ersten postgradualen Anstellung bei meinem Arbeitgeber bereits seit längerer Zeit für die Erstellung, Pflege und Validierung von Excel-Spreadsheets (umgangssprachlich auch Excel Validierung) zuständig.

Nachdem ich seit einigen Weiterbildungen im Jahr 2011 auch offiziell Computervalidierungsbeauftragter bin, möchte ich in diesem Blog von meinen Erfahrungen und den auftretenden Stolpersteinen im Bereich der Computersystemvalidierung (speziell “Validierung” von Excel-Spreadsheets) berichten und diese diskutieren.

Die Tatsache, dass von mir erstellte und validierte Excel-Sheets im September 2011 im Rahmen einer GLP-Inspektion von swissmedic und bafu ohne major oder critical finding inspiziert wurden zeigt, dass der von mir eingeschlagene Weg ein gangbarer (wenn auch sicher nicht der einzige) ist, um die angestrebte “Compliance” mit möglichst geringem Aufwand zu erreichen.