Medical · 2026 · Sub NDA
Un CRM pentru o clinică medicală
Pacienți, programarea medicilor, fișe electronice și facturare, într-un sistem care nu lasă datele să iasă din clinică.

- Client
- O clinică medicală privată
- An
- 2026
- Direcție
- Sisteme CRM
- Termen
- 1-2 luni
Problema
Datele medicale sunt o categorie specială conform articolului 9 din GDPR și nu pot fi tratate ca o listă obișnuită de clienți. CRM-urile cloud de raft înseamnă aproape întotdeauna că fișele pacienților stau pe serverul altcuiva, în altă țară. În același timp, cei care le folosesc sunt medici și recepționeri, nu specialiști IT, deci securitatea nu se poate plăti cu o interfață mai grea.
Ce am făcut
Sistemul este self-hosted: rulează în rețeaua clinicii, cu baza de date și fișierele pe serverul propriu al clinicii. Internetul este necesar doar pentru memento-urile pacienților, iar restul continuă să funcționeze fără el. Datele personale sunt criptate, contul de administrator este protejat cu un al doilea factor, iar fiecare acțiune asupra unei fișe ajunge într-un jurnal de audit. Drepturile nu sunt scrise în cod: rolurile se configurează per clinică. În interior sunt cincisprezece entități, inclusiv un catalog ICD-10 și fișe medicale versionate, cu interfața în trei limbi.
Rezultatul
Sistemul este livrat și se pregătește pentru implementare, deci încă nu are cifre de utilizare și nu inventăm niciuna. Ce se poate verifica azi: datele nu părăsesc clinica, rolurile se schimbă fără a atinge codul, iar fiecare acces la o fișă rămâne în jurnal.
Stack
- React
- TypeScript
- Vite
- Mantine
- Node.js
- Express
- MongoDB
- Docker
Ce poate sistemul
Pacienți
- Fișă cu poliță, alergii și diagnostice cronice
- CNP, telefon, adresă și poliță se păstrează criptate
- Căutare în câmpurile criptate, prin indice orb
- Control al dublurilor după CNP și după nume cu data nașterii
- Anonimizare în loc de ștergere, conform GDPR
- Consimțământ pentru prelucrarea datelor, cu formular tipăribil
Programări
- Grilă a zilei 08:00-20:00, pe medici
- Mutarea programării prin tragere cu mouse-ul
- Suprapunerile de timp sunt respinse
- Orar săptămânal al medicului și concedii
- 7 stări, de la confirmare la neprezentare
- Calendarul se actualizează live în toate filele deschise
- Listă de așteptare pentru intervalul care se eliberează
Fișe medicale
- Consultație: acuze, examen, diagnostic, recomandări
- Modificarea creează o versiune nouă, cele vechi rămân neatinse
- Istoricul versiunilor este vizibil în interfață
- Catalog ICD-10 cu autocompletare în trei limbi
- Șabloane de examinare, salvate direct din formular
- Vizită repetată dintr-un buton
Fișiere și tipar
- Încărcare prin tragere, cu verificarea tipului după semnătura fișierului
- Extensia falsificată este respinsă
- Fișierele stau în afara webroot și se livrează doar prin API
- Patru documente PDF: extras, rețetă, factură, consimțământ
- Fiecare document se tipărește în trei limbi
Facturare
- Facturi INV-AAAA-NNNN, cu poziții din lista de prețuri
- Sumele în unități minore întregi, fără virgulă mobilă
- Plată în numerar, cu cardul și prin asigurare
- Starea facturii se recalculează după suma plătită
- Raport de casă al zilei, pe metode de plată
- Factură creată direct din consultația încheiată
Securitate
- 17 drepturi atomice, rolurile se compun în panoul de administrare
- Autentificare în doi pași, obligatorie pentru administrator
- Blocare progresivă după cinci încercări eșuate
- Drepturile se recitesc la fiecare cerere, dezactivarea are efect imediat
- Jurnal de audit: autentificări, vizualizări de fișe, descărcări
- Memento-uri pentru pacienți prin Telegram și e-mail
Ecrane din sistem

Ziua clinicii pe medici, cu stările programărilor 
Fișa pacientului: date criptate, poliță, consimțământ GDPR 
Jurnalul consultațiilor cu diagnostice ICD-10 
Facturi și plăți: numerar, card, asigurare 
Încasări, programări, neprezentări și pacienți noi 
Constructorul de roluri: 17 drepturi atomice
În cifre
- date în afara cliniciiself-hosted, fără cloud
- 0
- limbi de interfațăengleză, română, rusă
- 3
- coduri ICD-10 în catalogul de bază
- 144