Acest proiect reprezintă backend-ul unei aplicații web pentru gestionarea unei clinici medicale. Acest document oferă detalii despre API-ul utilizat pentru gestionarea doctorilor, pacienților și programărilor în cadrul clinicii.
- Clonează Repositoriul:
git clone https://github.com/alien1403/Proiect-NodeJS.git"
cd Proiect-NodeJS
- Instalează Dependințele:
npm install
- Configurează Baza de Date:
-
Pentru SQLite, nu este nevoie să creezi manual o bază de date. Aceasta va fi creată automat când vei rula migrările.
-
Asigură-te că ai SQLite instalat pe sistemul tău.
-
În fișierul
config/config.js
, verifică că setările de conexiune sunt configurează pentru SQLite, similar cu exemplul de mai jos:{ "development": { "dialect": "sqlite", "storage": "database_development.sqlite" }, "test": { "dialect": "sqlite", "storage": "database_test.sqlite" }, "production": { "dialect": "sqlite", "storage": "database_production.sqlite" } }
-
Rulează migrările pentru a crea tabelele necesare în baza de date SQLite:
npx sequelize-cli db:migrate
-
Odată ce migrările sunt rulate cu succes, tabelele vor fi create în baza de date SQLite specificată în fișierul de configurare.
-
- Rulează Serverul:
npm start
- GET /api/doctors: Returnează o listă cu toți doctorii.
- POST /api/doctors: Adaugă un nou doctor în sistem.
- GET /api/doctors/:id: Returnează detalii despre un doctor specific.
- PUT /api/doctors/:id: Actualizează detaliile unui doctor existent.
- DELETE /api/doctors/:id: Șterge un doctor din sistem, împreună cu toate programările asociate.
- GET /api/patients: Returnează o listă cu toți pacienții.
- POST /api/patients: Adaugă un nou pacient în sistem.
- GET /api/patients/:id: Returnează detalii despre un pacient specific.
- PUT /api/patients/:id: Actualizează detaliile unui pacient existent.
- DELETE /api/patients/:id: Șterge un pacient din sistem, împreună cu toate programările asociate.
- GET /api/appointments: Returnează o listă cu toate programările.
- POST /api/appointments: Programă o nouă consultație între un doctor și un pacient.
- GET /api/appointments/:id: Returnează detalii despre o programare specifică.
- PUT /api/appointments/:id: Actualizează detaliile unei programări existente.
- DELETE /api/appointments/:id: Șterge o programare din sistem.
- Endpoint-ul /signup permite utilizatorilor să creeze un cont nou în sistem.
- Utilizatorii trimit un request POST către acest endpoint furnizând informațiile necesare pentru a crea un cont, cum ar fi numele, adresa de email, parola etc.
- Serverul primește aceste date și le validează folosind un schema specific. Schema specifică asigură că datele trimise sunt valide și respectă anumite criterii, cum ar fi lungimea minimă a parolei, validitatea adresei de email etc.
- După validare, serverul criptează parola utilizatorului înainte de a o stoca în baza de date.
- Acest lucru este crucial pentru securitate, deoarece asigură că parolele utilizatorilor sunt păstrate în siguranță, chiar și în cazul unei breșe de securitate.
- Informațiile utilizatorului sunt apoi salvate în baza de date, creând un nou rând în tabela corespunzătoare (Doctor sau Patient, în funcție de tipul utilizatorului).
- După ce contul a fost creat cu succes, serverul generează un token JWT (JSON Web Token) și îl returnează către client. Acest token va fi folosit pentru autentificarea ulterioară a utilizatorului.
- Endpoint-ul /signin permite utilizatorilor să se autentifice în sistem folosind un cont existent.
- Utilizatorii trimit un request POST către acest endpoint furnizând adresa lor de email și parola.
- Serverul primește aceste date și le validează folosind un alt schema specific, pentru a se asigura că sunt furnizate toate informațiile necesare și că sunt valide.
- După validare, serverul caută în baza de date un utilizator cu adresa de email furnizată. Dacă utilizatorul există, serverul compară parola furnizată cu parola stocată în baza de date.
- Pentru a verifica parola, serverul folosește funcția bcrypt.compare() pentru a compara parola furnizată cu parola criptată stocată în baza de date. Dacă parolele se potrivesc, utilizatorul este autentificat cu succes și un token JWT este generat și returnat către client.
- Clientul poate folosi acest token pentru a accesa rutele protejate ale aplicației, confirmând identitatea și autentificarea utilizatorului.
- Node.js
- Express.js
- Sequelize (pentru interacțiunea cu baza de date)
- Bcrypt.js (pentru hashingul parolelor)
- JSON Web Token (JWT) (pentru autentificarea utilizatorilor)
-
Crearea Contului de pacient:
- Accesați endpoint-ul /signup și furnizați informațiile necesare, cum ar fi numele, adresa de email și parola.
- Validarea informațiilor furnizate de server și crearea unui cont în sistem.
-
Autentificare Utilizator:
- Accesați endpoint-ul /signin și furnizați adresa de email și parola pentru a vă autentifica în sistem.
- Obțineți un token JWT care va fi folosit pentru autentificare în alte request-uri.
-
Obținerea Listei de Doctori:
- Accesați endpoint-ul /api/doctors pentru a obține lista de doctori disponibili
-
Selectarea Doctorului și Orarului:
- Selectați un doctor și o ora pentru consultație.
-
Crearea Programării:
- Trimiteți un request POST către endpoint-ul /api/appointments, furnizând detalii despre programare, cum ar fi data și ora, doctorul selectat.
-
Confirmarea Programării:
- Serverul validează informațiile primite și salvează programarea în baza de date.
- Returnează un răspuns către client pentru a confirma crearea cu succes a programării.
-
Autentificare Utilizator:
- Accesați endpoint-ul /signin și furnizați adresa de email și parola pentru a vă autentifica în sistem.
- Obțineți un token JWT care va fi folosit pentru autentificare în alte request-uri.
-
Accesarea Listei de Consultații:
- Accesați endpoint-ul /api/appointments pentru a obține lista de consultații disponibile.
- Identificați consultația pe care doriți să o ștergeți, bazându-vă pe informațiile primite.
-
Verificarea Accesului la Consultație:
- Verificați dacă utilizatorul autentificat are dreptul de a șterge această consultație. -Dacă utilizatorul este un doctor și consultația aparține lui sau dacă este un pacient și este asociat cu acea consultație, permiteți ștergerea.
-
Ștergerea Consultației:
- Trimiteți un request DELETE către endpoint-ul /api/appointments/:id, unde :id este identificatorul unic al consultației pe care doriți să o ștergeți.
- Serverul validează solicitarea și șterge consultația din baza de date.
- Returnează un răspuns către client pentru a confirma ștergerea cu succes a consultației.
Pentru întrebări sau feedback, mă poți contacta prin email sau LinkedIn.