21 CFR Part 11 în practică: audit trail, semnături electronice, integritatea datelor
Ce cere concret reglementarea FDA pentru înregistrări și semnături electronice — și cum se traduce asta în decizii de arhitectură, nu în documente.
Ce cere concret reglementarea FDA pentru înregistrări și semnături electronice — și cum se traduce asta în decizii de arhitectură, nu în documente.
Acest articol e perspectiva unui inginer care a lucrat sub aceste cerințe, nu consultanță de reglementare. Pentru decizii de conformitate, consultă specialistul vostru de calitate/reglementare.
Când auzi prima dată „trebuie să fim conformi cu Part 11“, sună a task de documentație. Nu e. Part 11 se traduce în decizii de arhitectură pe care, dacă le iei greșit la început, le plătești printr-o rescriere.
Am lucrat pe sisteme unde asta conta efectiv — componente pentru un sistem de date de cromatografie la Waters și sisteme clinice la Cerner. Articolul ăsta e despre partea de inginerie, nu despre cum se completează formularele.
Este reglementarea FDA pentru înregistrări electronice și semnături electronice. Ideea centrală: dacă înlocuiești hârtia și semnătura de mână cu un sistem informatic, sistemul trebuie să ofere cel puțin aceeași încredere.
Cerințele care ating direct codul:
Observă ce nu scrie: nicio tehnologie anume. Poți fi conform cu tehnologii foarte diferite, dacă poți demonstra proprietățile de mai sus.
Și, mai important, nu se aplică peste tot. Part 11 vizează înregistrările cerute de o reglementare de fond (predicate rule) și pe care alegi să le ții electronic. Prin ghidul FDA din 2003 privind domeniul de aplicare, agenția și-a declarat intenția de a exercita discreție în aplicare pentru o parte din cerințe — inclusiv audit trail — și a legat decizia de o evaluare de risc justificată și documentată. Practic: nu auditezi tot pentru că „așa cere Part 11“, ci pentru că ai stabilit, argumentat, ce intră în domeniu.
Restul articolului presupune că ai făcut deja delimitarea asta.
Aici se împotmolesc cele mai multe echipe, pentru că un audit trail conform nu e un simplu tabel de log-uri.
Trebuie să fie:
Consecința tehnică e mare: nu ai voie să pierzi valoarea anterioară la o modificare. Fie versionezi rândul, fie un trigger capturează starea veche înainte să fie suprascrisă — cerința e ca informația precedentă să rămână recuperabilă, nu ca rândul curent să nu fie niciodată actualizat. „Ștergerea“ devine, de regulă, o marcare logică. Iar audit trail-ul nu poate fi editabil din aplicație — dacă un admin îl poate modifica, nu mai are valoare probatorie.
O greșeală clasică: log-uri de aplicație folosite ca audit trail. Log-urile se rotesc, se pierd, se pot filtra și nu sunt structurate pe înregistrări. Nu sunt același lucru.
O semnătură electronică nu e o bifă „Sunt de acord“. Reglementarea cere ca semnătura să conțină explicit:
| Componentă | Ce înseamnă practic |
|---|---|
| Numele semnatarului | tipărit, nu doar un ID intern |
| Data și ora semnării | marcaj de timp al sistemului |
| Semnificația semnării | ce înseamnă: revizuire, aprobare, responsabilitate, autor |
În plus, semnătura trebuie legată de înregistrarea ei astfel încât să nu poată fi decupată, copiată sau transferată pe altă înregistrare pentru a falsifica ceva.
Pentru semnăturile care nu se bazează pe biometrie, se cer cel puțin două componente distincte de identificare — de exemplu un identificator de utilizator și o parolă. Într-o sesiune continuă, prima semnare le folosește pe amândouă, iar semnările următoare pot folosi cel puțin componenta privată persoanei. În afara unei sesiuni continue, fiecare semnare le cere pe toate.
Din perspectiva implementării, asta înseamnă că „semnătura“ e o entitate proprie în model, legată criptografic sau referențial de conținutul semnat — nu un câmp approved_by pe rândul respectiv.
În jurul Part 11 gravitează un set de principii de integritate a datelor, cunoscute ca ALCOA+. Nu sunt textul reglementării, dar sunt limbajul comun în care inspectorii discută datele:
Dacă îți proiectezi modelul de date ținând cont de ele, conformitatea devine o consecință, nu un efort separat. „Contemporaneous“, de exemplu, îți spune imediat că ora trebuie luată de la server, nu de la client.
Ordinea care mi s-a părut cea mai eficientă:
Restul — politici, instruire, proceduri — există și contează, dar sunt în afara codului. Partea pe care o poți strica ireversibil ca inginer e cea de mai sus.
Dacă construiești ceva care intră în zona asta și vrei o discuție tehnică — nu una de conformitate — sunt deschis.
Capgemini — client Waters Corporation
Software Engineer (contract)
iun. 2022 – mai 2023
Cerner Corporation
Software Engineer
oct. 2016 – oct. 2019
Dacă lucrezi la ceva din zona asta, hai să vorbim 30 de minute.
Programează o discuție