Ghid de utilizare
Securitate și GDPR
Pas cu pas, pe roluri. Același conținut se deschide din butonul „?” de pe fiecare pagină.
Securitate și GDPR
Pagina Securitate adună instrumentele de conformitate GDPR și de securitate a conturilor. Folosită de responsabilul cu protecția datelor și de administrator.
Jurnal de acces (GDPR)
Cine a accesat datele unui pacient, când și pe ce rută. Se poate filtra pe pacient și interval. Durata de păstrare în bază se configurează în Sistem (audit.acces_zile); înregistrările mai vechi se arhivează (vezi mai jos). Export Excel / Tipărește dau lista cu filtrele ultimei căutări (până la 10.000 de rânduri, nu doar cele 500 de pe ecran, cu o notă când e tăiată); serverul citește rândurile și scrie el însuși exportul în jurnalul de audit (audit.export-jurnal, cu filtrele, numărul de rânduri și dacă lista a fost tăiată) înainte de a le da, la fel la istoric și la comasări (acestea cer și dreptul de vizualizare a pacienților). Listele de pe ecran dau cel mult 500 de rânduri (comasările 200); volumele mai mari ies numai prin export, deci orice extragere mare rămâne în audit.
Alerte la fișele confidențiale
O fișă se marchează confidențială din fișa pacientului, butonul Confidențialitate (dreptul pacienti.confidentialitate; implicit numai administratorul): VIP (persoană publică), Personalul spitalului sau Acces restricționat, apoi Salvează marcajul. Fișa arată atunci eticheta „Fișă confidențială”. Accesul nu se blochează; marcajul doar urmărește cine o deschide.
Când fișa (sau un episod al ei) e deschisă de cineva din afara echipei de îngrijire, Nexus scrie o alertă: cine, când, ce fișă, de pe ce adresă, fără date medicale. Echipa de îngrijire, care nu dă alertă: medicul curant al unui episod deschis sau încheiat în ultimele 30 de zile, medicul curant trecut pe fișă și cei repartizați pe secția unde pacientul e internat (sau prezent la gardă / în ambulator). Deschiderile repetate ale aceleiași fișe de același utilizator într-o fereastră (implicit 60 de minute) se adună într-o singură alertă, cu numărul de accesări.
Fila Alerte acces (dreptul audit.vizualizare) arată alertele, implicit Doar nerevizuite; Reîncarcă le citește din nou. La fiecare: o notă opțională (ex. „acces justificat: consult cerut de ATI”) și Marchează revizuită, care păstrează cine a revizuit și când. Vezi în jurnal arată accesările fișei în jurnalul de acces; fișa nu se deschide de aici, ca revizuirea să nu dea o alertă nouă. Cei cu dreptul de audit văd în clopoțel câte alerte sunt nerevizuite.
Setările: Sistem → Securitate și acces → Alerte la fișele confidențiale: pornirea (securitate.alerte_acces_activ), fereastra (securitate.alerte_acces_fereastra_minute), destinatarii mesajului: utilizatori (securitate.alerte_acces_destinatari, numele de utilizator separate prin virgulă) și / sau o grupă (securitate.alerte_acces_grupa, codul grupei, ex. responsabilul de protecția datelor). Fiecare destinatar primește în Mesaje un mesaj direct, cu numărul fișei și inițialele pacientului, fără diagnostic sau secție. Fără destinatari, alertele rămân în listă și în clopoțel.
Arhivarea jurnalelor (păstrarea)
Fila Arhivarea jurnalelor arată, pentru jurnalul de audit, istoricul pe câmp și jurnalul de acces, câte rânduri sunt în bază, câte au trecut de termenul de păstrare și arhivele făcute. Zilnic, după ora 02:00, rândurile peste termen se scriu într-un fișier comprimat (.jsonl.gz, un rând JSON pe înregistrare, cu amprenta SHA-256 într-un fișier .sha256 alături), fișierul se recitește și abia apoi rândurile se șterg din bază. Dacă folderul nu se poate scrie, nu se șterge nimic. Rulează acum face același lucru imediat (administrator); arhivele se descarcă din aceeași filă. Fiecare rulare (și fiecare descărcare) apare în jurnalul de audit (jurnale.arhivare). Exportul GDPR apare și în jurnalul de acces (tipul export-gdpr), lângă citirile fișei.
Setările: Sistem → Securitate și acces → Păstrarea și arhivarea jurnalelor:
| Setarea | Implicit | Ce face |
|---|---|---|
audit.acces_zile |
730 | jurnalul de acces în bază (grupa Parole și jurnal de acces) |
audit.jurnal_zile |
0 (în bază) | jurnalul de audit |
audit.istoric_zile |
0 (în bază) | istoricul pe câmp |
jurnale.arhivare_activa |
da | arhivă înainte de ștergere („nu” = ștergere directă) |
jurnale.cale_arhiva |
gol = <Rădăcină>\arhive-jurnale (fără rădăcina instalării: %ProgramData%\Nexus\arhive-jurnale, cu acces numai pentru administratori și aplicație) |
folderul arhivelor; în producție o cale pe volumul backup-ului. Niciodată în folderul aplicației: acolo arhivele s-ar pierde la actualizare, deci Nexus nu șterge nimic din bază și trimite alerta „Arhiva jurnalelor” |
jurnale.arhiva_ani |
0 (nu se șterg) | arhivele mai vechi se șterg |
Termenele legale sunt de verificat cu responsabilul cu protecția datelor și cu juristul unității înainte de a scurta valorile implicite: RGPD nu fixează un termen pentru jurnale (art. 5 alin. (1) lit. e: cât e necesar scopului), iar jurnalul de audit e și dovada integrității foii de observație, care se arhivează pe termen lung (Legea nr. 46/2003 și normele de arhivare a documentelor medicale, de verificat termenul exact); legea securității rețelelor (NIS2, OUG nr. 155/2024) poate cere păstrarea jurnalelor de securitate (de verificat dacă unitatea intră sub ea și ce termen cere). Până la decizie, jurnalul de audit și istoricul pe câmp rămân în bază, iar arhivele nu se șterg.
Export GDPR al dosarului unui pacient
Pentru dreptul de acces (art. 15 RGPD) și de portabilitate (art. 20): în fișa pacientului, butonul Export GDPR (dreptul pacienti.export_gdpr, dat grupei Registratură; administratorul îl are oricum). Se scrie motivul (numărul și data cererii) și se alege dacă intră și fișierele documentelor. Rezultă o arhivă ZIP:
rezumat.pdf: datele de identificare, episoadele cu diagnosticele, rezultatele de laborator și de imagistică, lista documentelor;date-pacient.json: toate înregistrările legate de pacient, pe tabele (fișa, episoadele, diagnosticele, notele, cererile și rezultatele, rețetele, documentele …), citibile de calculator;documente/: fișierele din dosar;CITESTE.txt(ce conține și temeiul) șiSHA256SUMS.txt(amprentele).
Exportul se jurnalizează (pacienti.export-gdpr: cine, când, motivul, ce conține și amprenta SHA-256 a arhivei). Nu intră jurnalele de securitate ale unității (cine a deschis fișa); dacă pacientul le cere, le extrage responsabilul cu protecția datelor din fila Jurnal de acces. Arhiva conține date medicale: se predă pacientului (sau reprezentantului legal, cu actul care o dovedește) după verificarea identității, pe un suport protejat, și nu se păstrează pe stația de lucru.
Istoric pe câmp
Istoricul modificărilor unei entități, câmp cu câmp (cine, când, valoarea veche → nouă), plus tabul Drepturi la data X: drepturile unui utilizator la o dată aleasă (reconstituire pentru audit). Istoricul se exportă (Excel / tipărire) cu filtrele ultimei căutări.
Comasări de fișe
Fila Comasări fișe arată jurnalul unificărilor manuale de fișe duplicate (din fișa pacientului → „Unifică cu altă fișă”): data, fișa păstrată (link), fișa invalidată și CNP-ul ei, motivul, câte episoade și câte legături s-au mutat și autorul. Fișa invalidată nu se șterge. Lista cere și dreptul de vizualizare a pacienților. Export Excel / Tipărește dau jurnalul comasărilor (cu CNP-urile invalidate), înregistrat în audit.
Conturi
Deblocarea unui cont blocat (după prea multe încercări eșuate), din fila Setări sistem (dreptul utilizatori.administrare). Politica de parole (expirare, istoric, complexitate) se configurează în Sistem (parola.*).
Autentificarea în doi pași (2FA)
Al doilea pas la intrare: după parolă (locală sau din domeniu), un cod de 6 cifre din aplicația de autentificare de pe telefon (Google Authenticator, Microsoft Authenticator, FreeOTP, Aegis — orice aplicație TOTP) sau un cod de recuperare.
- Politica (Sistem → Securitate și acces → „Autentificare în doi pași (2FA)”,
securitate.2fa): Oprit (nimeni nu e întrebat de cod; înrolările făcute rămân și revin când politica se repornește), Doar administratorii (contul administrator și oricine are un drept de administrare:admin.*,utilizatori.*,grupe.*,audit.*,actualizari.administrare) sau Toți utilizatorii (toate conturile personale, locale și din domeniu). Conturile de serviciu (conectorul de laborator, alte programe) nu sunt întrebate niciodată. - Unde se cere (
securitate.2fa_retea, „Unde se cere al doilea pas”): Oriunde (și în spital) (implicit: codul se cere la fiecare intrare, și în spital) sau Numai din afara spitalului: codul se cere doar când browserul vine din afara rețelelor spitalului (Nexus deschis din internet, de ex. de acasă sau de pe telefon fără Wi-Fi-ul spitalului); în spital se intră numai cu parola. Pentru un spital care și-a expus Nexus în internet: politica Toți utilizatorii + Numai din afara spitalului. - Rețelele spitalului (
securitate.retele_interne, „Rețelele spitalului (adrese interne)”): adresele IP sau rețelele CIDR considerate „în spital”, separate prin virgulă; gol = rețelele private (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), loopback și echivalentele IPv6. O intrare cu „!” în față scoate o adresă: de ex.!192.168.1.1când routerul trimite cererile din internet cu adresa lui (altfel toți cei din internet ar părea „în spital”). Verificarea: de pe un telefon fără Wi-Fi-ul spitalului deschideți Profil → Autentificare în doi pași: rândul „Acum intri de la adresa …” trebuie să spună din afara rețelei spitalului. - Din afara spitalului (de acasă), fără înrolare: un cont căruia politica îi cere al doilea pas și nu e înrolat nu poate intra în Nexus de acasă sau de oriunde din afara spitalului, nici în fereastra de înrolare, nici cu un cod de înrolare; se înrolează întâi din spital. Mesajul: „Autentificarea din afara spitalului cere autentificarea în doi pași. Activați-o din spital, din Profil (Autentificare în doi pași → Activează).” Refuzul apare în jurnalul de audit (
acces.2fa-refuz-din-afara, cu adresa). Astfel cine află parola unui cont neînrolat nu-și poate lega propriul telefon de el din internet. - Înrolarea: cine intră sub politică fără să fie înrolat e dus, imediat după parolă, la înrolare: scanează codul QR (sau scrie cheia), scrie primul cod, apoi primește 10 coduri de recuperare, arătate o singură dată (de notat și păstrat separat de telefon). Oricine se poate înrola și singur, din Profil → Autentificare în doi pași → Activează; sub o politică pornită i se cere apoi codul la fiecare intrare.
- Pe telefon (Nexus mobil,
/m): aceeași pagină de intrare, cu aceiași pași. - La intrare: codul afișat acum de aplicație (± 30 de secunde, pentru ceasul telefonului) — un cod folosit nu mai merge a doua oară — sau un cod de recuperare (fiecare o singură dată). Codurile greșite se numără la blocarea contului, ca parolele greșite.
- „Ține minte acest dispozitiv” apare numai dacă
securitate.2fa_zile_dispozitiv> 0 (implicit 0): browserul nu mai cere codul atâtea zile. Nu se bifează pe calculatoarele comune. Închiderea sesiunilor, resetarea 2FA și schimbarea parolei anulează dispozitivele ținute minte. - Profil: starea, „Mută pe alt telefon” (cere un cod din aplicația veche sau un cod de recuperare), coduri de recuperare noi (cu un cod curent), dezactivarea (parola + un cod; nu se poate când politica o cere contului).
- Înrolarea la intrare are o fereastră (
securitate.2fa_inrolare,securitate.2fa_inrolare_zile, implicit 7 zile): după ce politica e pornită (sau contul creat), un cont neînrolat se înrolează singur la intrare numai în aceste zile. Apoi îi trebuie un cod de înrolare de la administrator: Administrare acces → contul → Cod de înrolare 2FA (12 caractere, o singură folosire, 24 de ore; se dă titularului personal sau la telefon, după verificarea identității). Cu „Cod de la administrator” codul se cere mereu. Astfel cine află parola unui cont încă neînrolat nu-și poate lega propriul telefon de el. - Anunțul înrolării: după fiecare înrolare (la intrare sau din Profil) titularul vede în clopoțel „Autentificarea în doi pași a contului a fost activată… Dacă nu ați fost dumneavoastră, anunțați imediat IT” și primește același mesaj pe e-mail, dacă contul are adresă și serverul de e-mail e configurat.
- Jurnalul: intrările cu codul (
acces.2fa-ok), cu un cod de recuperare (acces.2fa-cod-recuperare, cu câte coduri mai rămân), dispozitivele ținute minte (acces.2fa-dispozitiv), codurile greșite și înrolările apar în jurnalul de audit al contului. - Acțiunile sensibile (restaurarea bazei, copia backup-urilor în afara serverului, aprobarea și setările actualizărilor, instalarea dictării locale) cer parola și, pentru un cont înrolat, codul de acum din aplicație.
- Telefon pierdut: intră cu un cod de recuperare și mută autentificarea pe telefonul nou; fără coduri, administratorul face Administrare acces → contul → Resetează 2FA (auditat, închide sesiunile); la următoarea intrare contul se înrolează din nou (după fereastră, cu un cod de înrolare). Parola sau 2FA ale unui cont cu drepturi de administrare le resetează numai un administrator.
- Singurul administrator fără telefon și fără coduri: IT-ul, pe server, într-o consolă „ca administrator”:
Nexus.Api.exe --reseteaza-2fa <utilizator>(din<Rădăcină>\curent\api). Comanda resetează 2FA, scrie în jurnalul de audit cu contul Windows și afișează un cod de înrolare pentru telefonul nou. - Programele care intră cu parola prin API (testele de pe server, uneltele IT) vin de pe serverul însuși (loopback, „în spital”): cu „Numai din afara spitalului” nu sunt întrebate de cod; cu „Oriunde” contul lor trebuie să fie de serviciu sau să dea codul.
- Secretul aplicației e păstrat pe server criptat cu cheia mașinii (DPAPI; pe un server Linux, cu cheia instanței). Dacă baza Nexus e mutată pe alt server, codurile din aplicație nu se mai pot verifica acolo (mesajul o spune): intrați cu un cod de recuperare și refaceți înrolarea, sau administratorul resetează 2FA.
- Nexus găzduit în cloud (instanța pornită cu
NEXUS_CLOUD=1): „Cine intră cu al doilea pas” e Toți utilizatorii și „Unde se cere al doilea pas” e Oriunde (și în spital), impuse de găzduire, oricare ar fi valorile salvate. În Sistem → Securitate și acces cele două câmpuri apar blocate, cu nota „Impus de găzduirea în cloud: al doilea pas se cere tuturor conturilor personale, de oriunde (NEXUS_CLOUD=1 în nexus.env).”, iar o salvare a lor e refuzată cu mesajul „… nu se schimbă: valoarea e impusă de găzduirea în cloud (NEXUS_CLOUD=1).” Restul setărilor 2FA (fereastra de înrolare, dispozitivul ținut minte) se schimbă ca de obicei.
Limitarea încercărilor de autentificare
Pe lângă blocarea contului după N parole greșite, Nexus limitează încercările (parolă, cod 2FA, deblocarea ecranului): cel mult securitate.login_limita_ip pe adresă IP și securitate.login_limita_utilizator pe nume de utilizator într-o fereastră de securitate.login_fereastra_minute minute (implicit 30 / 10 / 15). Peste limită ecranul spune „Prea multe încercări de autentificare. Așteptați câteva minute” și nici parola corectă nu trece până la sfârșitul ferestrei. Limita pe utilizator numără numai încercările greșite pentru același cont de la aceeași adresă („SPITAL\ion.pop”, „ion.pop@spital.local” și „ion.pop” sunt același cont), deci nimeni nu poate bloca intrarea altcuiva de la alt calculator doar scriindu-i numele; cea pe adresă oprește o încercare împrăștiată pe multe conturi, iar blocarea contului una împrăștiată pe multe adrese.
Blocarea ecranului la inactivitate
Pe stațiile folosite de mai multe persoane: cu securitate.blocare_inactivitate_minute > 0 (Sistem → Securitate și acces → „Limitarea încercărilor și blocarea stației”; implicit 0, oprit), după atâtea minute fără tastatură, mouse sau atingere ecranul Nexus se blochează în toate filele browserului. Pagina rămâne cum era (formularele nesalvate rămân completate), dar nu se vede și nu se poate folosi până la parola contului; „Ieșire” închide sesiunea pentru alt utilizator. Cât e blocat, serverul refuză și cererile sesiunii (nu doar ecranul). Durata sesiunii rămâne 8 ore (o tură): blocarea acoperă stația lăsată nesupravegheată în timpul turei.
Read-only (îngheț)
Comutatorul global de read-only (răspuns 423 la scriere), din fila Setări sistem (cere dreptul de administrare a sistemului). Înghețul pe zi / pe secție și limita de zile de editare sunt în Sistem → Clinic și paraclinic → Editare și închidere de perioadă (editare.*). Folosite la închiderea lunii sau în timpul raportării.
Semnătură calificată
Semnarea calificată a unității (CAdES-B-B, cu marcă temporală RFC 3161: CAdES-B-T) a documentelor din dosar, cu certificat din PFX sau din magazia Windows, și verificarea la descărcare. Semnăturile pe rol (medic curant, șef de secție, pacient), marca temporală și verificarea completă: Semnături electronice.
De reținut
- Drept de vizualizare: audit.vizualizare (acoperă GDPR, istoricul și starea arhivării). Rularea arhivării și descărcarea arhivelor cer admin.sistem (cont administrator); exportul GDPR cere pacienti.export_gdpr. Resetarea 2FA a unui utilizator cere
utilizatori.administrare, ca resetarea parolei. - Numerotarea automată a documentelor are pagina separată Numerotare.
- La descărcare se verifică doar semnătura (documentul nemodificat); lanțul certificatului, marca temporală și revocarea le arată Verifică semnăturile din dosar.