Securitate si confidentialitate
Criptarea datelor, GDPR, jurnalul de audit, izolarea datelor
Criptarea datelor
Toate datele personale ale pacientilor sunt criptate la nivel de aplicatie folosind:
- AES-256-GCM — standardul de criptare utilizat de guverne si institutii financiare
- Chei derivate per clinica (HKDF) — fiecare clinica are propria cheie de criptare, derivata dintr-o cheie master
- Campuri criptate: nume, telefon, email, adresa, CNP, istoricul medical
Datele sunt criptate inainte de a fi scrise in baza de date si decriptate doar la afisare.
Cautare pe date criptate
Cautarea functioneaza fara a decripta toate inregistrarile:
- Cautare fuzzy pe nume — foloseste HMAC trigrame (tokenuri criptografice) cu prag de similaritate de 60%
- Cautare exacta pe telefon/email/CNP — foloseste blind index (HMAC-SHA256)
- Izolare per clinica — indexii sunt derivati cu cheia clinicii, deci o clinica nu poate cauta in datele alteia
Izolarea datelor (multi-tenancy)
Fiecare clinica are datele complet izolate:
- Toate tabelele din baza de date contin o coloana
clinic_id - Fiecare query este filtrat automat prin
withClinicScope()— nu exista nicio cale de a accesa datele altei clinici - Organizatiile Clerk gestioneaza autentificarea si rolurile per clinica
Conformitate GDPR
Export de date
Administratorii pot exporta toate datele unui pacient in format JSON:
- Date personale (decriptate)
- Programari
- Formulare completate
- Retete
- Fisiere
Stergere date (dreptul la uitare)
Stergerea GDPR anonimizeaza ireversibil:
- Toate campurile personale (nume, telefon, email, CNP, adresa)
- Indecsi de cautare (blind index, trigrame)
- Raspunsuri la formulare si semnaturi
- Note din retete
- Jurnalul de audit este pastrat cu un flag
gdprErasure— pentru conformitate legala
Ce NU se sterge
- Inregistrarile de programari (anonimizate, fara date personale)
- Jurnalul de audit (obligatoriu legal)
- Facturile (obligatoriu fiscal)
Jurnalul de audit
Toate actiunile din aplicatie sunt inregistrate permanent:
- Cine a facut actiunea (numele utilizatorului)
- Ce s-a schimbat (campul, valoarea veche, valoarea noua)
- Cand s-a intamplat (timestamp precis)
- Ce entitate a fost afectata (pacient, programare, reteta, etc.)
Jurnalul este append-only — nu se poate modifica sau sterge. Accesibil din Setari → Jurnal activitate.
Stocare fisiere
Fisierele pacientilor sunt stocate in Cloudflare R2:
- Upload server-proxied (fara expunere directa a credentialelor)
- Cai izolate per clinica (
clinic_id/patient_id/file) - Descarcare prin URL-uri semnate temporar