Aplicatie Web Pentru Gestiunea Unui Cabinet Stomatologic

Cuprins

Introducere

Timpul este o resursă prețioasă deoarece trebuie folosit în mod înțelept, în caz contrar individul nu își va putea duce până la capăt angajamentele în timp util, exisă posibilitatea ca acesta să se piardă în detalii investind timp în activități neimportante și nereușind să le facă pe cele importante. Din această cauză tot mai multe cabinete au renunțat si renunță la vechea agendă, în favoarea aplicațiilor web și a celor desktop.

Pe piața actuală, se pot găsi numeroase aplicații desktop care permit gestionarea unui cabinet stomatologic, funcțiile acestora fiind mult prea multe, uneori chiar și în plus. Însă aplicațiile web pentru gestiunea unui cabinet, nu sunt atât de frecvent întâlnite, iar cele existente sunt pur informaționale.

Tema aleasă este ”Gestionarea unui cabinet stomatologic” și are ca obiectiv realizarea unui site web, care îi oferă posibilitatea unui medic stomatolog să gestioneze datele pacienților, dar și posibilitatea pacienților de a vizualiza datele.

Tema lucrării a fost proprie, ideea pornind de la reprezentarea online a unei nevoi din zilele noastre. O astfel de pagină web are ca obiectiv principal satisfacerea nevoilor a doua clase de utilizatori. În primul rând ea trebuie să satisfacă nevoile beneficiarului (propietarul cabinetului) și, în al doilea rând, dar nu în ultimul, pacienților acelui cabinet.

Pentru crearea site-ul s-au folosit următoarele tehnologii necesare pentru dezvoltarea și administrarea paginilor web. Tehnologiile utilizate sunt:

Limbajul HTML folosit pentru crearea paginilor web;

CSS folosit pentru formatarea paginilor HTML;

JavaScript folosit pentru realizarea funcțiilor dinamice;

MySQL folosit pentru gestiunea bazei de date;

phpMyAdmin folosit pentru managementul bazei de date;

WampServer folosit pentru a crea aplicația web.

Cerințe și specificații

Scopul lucrării este realizarea unui site, util pentru cabinetele stomatologice. O latură a platformei este destinată medicului, iar alta pacientului.

Obiectivul principal al site-ului este înregistrarea datelor pacienților, cu avantaje atat pentru proprietarul cabinetului, cât și pentru pacient, care are posibilitatea de a vizualiza de acasă atât când este programat, cât și istoricul lucrărilor și al tratamentelor sale.

Medicul va trebui să poată adăuga pacienți, să le editeze datele, să îi șteargă dacă este cazul și să îi vizualizeze. În urma creării unui pacient medicul sau asistenta/ul va putea crea o programare pentru acesta. Li se vor putea crea pacienților, câte o fișă ce va conține toate lucrările pacientului respectiv, iar fiecare lucrare va avea atașate tratamentele.

Pacientul nu va avea dreptul să modifice nimic, el având dreptul, doar de a vizualiza informațiile personale.

Astfel în funcție de cine accesează site-ul, la un moment dat acesta va prezenta modificări la nivelul funcționalităților și la nivelul interfeței.

Pentru partea de admin va exista:

Pagină de start unde se vor putea accesa adăugarea de pacienți sau afișarea lor;

Pagină de programări unde se pot vizualiza sau adăuga acestea;

Pagină pentru tratamente;

Din pagina cu afișarea pacienților se vor putea vizualiza fișele acestora, iar din acestea tratamentele.

Pentru partea de utilizator înregistrat va fi:

Pagina de start unde vor fi datele de contact și programul cabinetului;

Pagina de programări va conține un istoric al programările pacientului respectiv.

Pagina de lucrări ce va conține lucrările propriu-zise împreună cu tratamentele lucrărilor.

Pagina de tratamente standard.

Un utilizator neînregistrat (vizitator) nu va avea access la paginile principale ale site-ului.

Fiecare nou utilizator al site-ului trebuie mai întâi să treacă pe la cabinet sau să ia legatura cu medicul pentru a i se crea un cont și pentru a i se da o parolă.

Analiza problemei

Ideea pentru tema aleasă a pornit de la o vizită la medicul stomatolog, unde la sfârșitul ședinței am observat că programările erau trecute într-o agendă, iar pacientul primea o bucată de hârtie pe care erau scrise ora și data următoarei ședințe. Aceasta fiind ușor de pierdut, m-am gândit la crearea unui site, unde un pacient ar putea să vadă când este programat. Astfel pacientul nu trebuie să se mai îngrijoreze în privința pierderii acelei mici hârtii, ce avea înscripționată data și ora. Iar medicul nu va mai fi nevoit să răsfoiască agenda pentru a vedea cine urmează.

Cu ajutorul aplicației medicul va putea să vadă când poate adăuga altă programare fără să suprapună mai multe programări.

Un alt plus față de agendă îl are prin faptul că prin intermediul aplicației, la programări se pot adăuga și observații, cum ar fi tratamentul ce urmează să fie aplicat; am întâlnit cazuri când medicul îl întreba pe pacient dacă mai știe ce i s-a făcut ședința trecută. Astfel medicul poate evita pierderea timpului gândindu-se la ce a făcut data trecută, fiind mult mai rapid să consulți istoricul programărilor sau tratamentele aplicate la ultima lucrare.

Drepturi utilizatori

Site-ul va conține o interfață cu funcții diferite pentru vizitatori, pentru medic/asistent și pentru pacient.

Vizitatorii vor avea acces doar la pagina principălă având disponibile:

Informații legate de locația cabinetului și datele de contact ale medicului și o scurta descriere.

Pacienții după logare vor avea disponibile:

Acces la prima pagină care conține date legate de contact și locație;

Acces la pagina de tratamante unde vor putea vizualiza tratamentele împreuna cu prețul standard ;

Acces la pagina cu programări unde vor putea vizualiza cand este următoarea programare dar și ce alte programări a mai avut;

Acces la pagina de lucrări unde poate vizualiza ce lucrări și la ce dinți sunt făcute, dar și tratamentele asociate acelor lucrări.

Medicul/Asistenta drepturi:

Vizualizează și gestionează pacienții împreună cu lucrările și tratamentele acestora;

Vizualizează și gestionează programările;

Vizualizeaza tratamentele și prețurile standard;

Funcționarea loginului

După cum se poate vedea și în diagrama UML un vizitator dacă încearcă să acceseze atât paginile de utilizator cât și cele de admin, el va fi redirecționat către pagina de login.

După logare pacientul nu va avea acces decât la paginile sale, el fiind redirecționat înapoi la pagina principală dacă încearcă să acceseze paginile adminului.

Adminul are acces atât la paginile destinate lui cât și la paginile afișate pacientului (pagina de start și cea de tratamente standard).

Cazuri de utilizare

După cum se poate observa și în diagrama de mai sus, un utilizator poate naviga de la o pagină la alta fără nici o problemă. Acesta își poate vizualiza lucrările, programările și tratamentele.

Mai sus avem o diagramă, ce ilustrează majoritatea paginilor, pe care adminul le va putea parcurge. Acesta va mai putea naviga de la ’Afișare pacienți’ și către ’Editare pacient’ sau către ’Afișare lucrări’ care la rândul ei, conține link-uri către ’Editare lucrare’ sau ’Afișare tratamente’. Din pagina de afișare a tratamentelor unui pacient putem naviga și către editarea acestora sau către paginile inițiale pentru programări și tratamente standard.

Proiectarea sistemului

Structura datelor din baza de date

O bază de date este o colecție de date corelate din punct de vedere logic, care reflectă un anumit aspect al lumii reale și este destinat unui anumit grup de utilizatori.

În acest sens, bazele de date pot fi create și menținute manual (un exemplu ar fi fișele de evidență a cărților dintr-o bibliotecă) sau computerizat așa cum sunt majoritatea bazelor de date în momentul de față. O definiție într-un sens mai restrâns a unei baze de date este următoarea:

O bază de date este o colecție de date centralizate, creată și menținută computerizat, în scopul prelucrării datelor în contextual unui set de aplicații. Prelucrarea datelor se referă la operațiile de introducere, ștergere, actualizare și interogare a datelor.

Orice bază de date are următoarele proprietăți implicite:

Baza de date este o colecție logică și coerentă de date ce are cel puțin un înțeles

Baza de date este destinată, construită și populată de date legate de un domeniu bine precizat. Ea are un grup de utilizatori și se adresează unui anumit grup de aplicații.

Câteva dintre avantajele oferite sunt:

Control centralizat al datelor, putând fi desemnată o persoană, ca responsabil cu administrarea bazei de date

Viteză mare de regăsire și actualizare a informațiilor

Sunt compacte: volumul ocupat de sistemele de baze de date este mult mai redus decât documetele scrise

Flexibilitatea ce constă în posibilitatea modificării structurii bazei de date, fără a fi necesară modificarea programelor de aplicație

Redundanță scăzută a datelor memorate, care se obține prin partajarea datelor între mai mulți utilizatori și aplicații.

De obicei o bază de date este memorată într-unul sau mai multe fișiere. Bazele de date sunt manipulate cu ajutorul sistemelor de gestiune a bazelor de date.

Cel mai răspândit tip de baze de date este cel relațional, în care datele sunt memorate în tabele. Pe lânga tabele, o bază de date relațională mai poate conține: indecși, proceduri stocate, declanșatori, utilizatori și grupuri de utilizatori, tipuri de date, mecanisme de securitate și de gestiune a tranzacțiilor etc.

Caracteristicile esențiale ale modelului relațional:

Datele sunt percepute de utilizatori ca tabele.

Operatorii relaționali care pot fi folosiți pentru prelucrarea datelor generează un tabel rezultat din tabelele operanzi.

Asocierea dintre tabele se realizează prin intermediul egalității valorilor unor atribute comune, ceea ce permite rezolvarea oricărei interogări. Pe lângă avantajul unui model de date precis și simplu, sistemele de baze de date relaționale mai beneficiază și de un limbaj de programare recunoscut și acceptat, limbajul SQL (Structured Query Language), pentru care au fost emise mai multe standarde de către Organizația Internațională de Standardizare (International Standardization Office-ISO).

Odata cu evoluția sistemelor informatice s-au modificat si cerințele și asteptările pe care le avem de la un calculator. Astfel am ajuns în ziua de azi ca pe un astfel de sistem să stocăm cantități mari de informații pe care să le utilizăm mai mult sau mai puțin. O bază de date este utilă în astfel de cazuri deoarece conține toate informațiile necesare despre obiectele utilizate într-o mulțime de aplicații.

În cadrul unei baze de date se cumulează toate datele necesare și apoi sunt structurate într-o manieră cât mai clară eliminându-se pe cât posibil redundanța. De asemenea un sistem de baze de date permite accesul simultan la aceleași informații a mai multor utilizatori.

Sistemul de gestiune a bazelor de date

Sistemele de gestiune a bazalor de date (SGBD) sunt sisteme informatice specializate în stocarea și prelucrarea unui volum mare de date, numărul prelucrărilor fiind relativ mic.

Termenul de bază de date se va referi la datele de prelucrat, la modul de organizare a acestora pe suportul fizic de memorare, iar termenul de gestiune va semnifica totalitatea operațiilor ce se aplică asupra datelor din baza de date.

Un SGBD trebuie să asigure următoarele funcții:

definirea – crearea bazei de date;

introducerea datelor în baza de date;

modificarea unor date deja existente în baza de date;

ștergerea datelor din baza de date;

consultarea bazei de date – interogare/extragerea datelor.

În plus un SGBD mai asigură și alte servicii:

suport pentru limbaj de programare;

interfață cât mai atractivă pentru comunicare cu utilizatorul;

tehnici avansate de memorare, organizare, accesare a datelor din baza de date;

utilitare încorporate: sistem de gestiune a fișierelor, liste, tabele etc.;

“help” pentru ajutarea utilizatorului în lucrul cu baza de date.

Apariția și răspândirea rețelelor de calculatoare a dus la dezvoltarea SGBD-urilor în direcția multiuser: mai mulți utilizatori folosesc simultan aceeași bază de date.

Principalul avantaj al rețelelor a fost eficiența mult sporită de utilizare a resurselor sistemelor de calcul: la o bază de date aflată pe un server central au acces simultan mai mulți utilizatori, situați la distanță de server, de unde rezultă o bună utilizare a resurselor server-ului și o economie de memorie datorată memorării unice a bazei de date.

Un SGBD este dotat cu un limbaj neprocedural de interogare a bazei de date SQL care permite accesul rapid și comod la datele stocate în baza de date.

În arhitectura unui sistem de baze de date SGBD ocupă locul central. Un SGBD este un ansamblu complex de programe care asigură interfața între o bază de date și utilizatorii acesteia. SGBD este componenta software a unui sistem de baze de date care interacționează cu toate celelalte componente ale acestuia asigurând legătura și interdependența între ele.

Principalele sarcini ale gestionarului bazei de date sunt:

reducerea redundanței prin identificarea informațiilor comune și alcătuirea corespunzătoare a aplicațiilor;

eliminarea inconsistențelor ce rezultă din reducerea redundanței;

utilizarea simultană a datelor de mai mulți utilizatori;

standardizarea informațiilor;

asigurarea securității BD prin acordarea și urmărirea modului de acces al utilizatorilor la componentele BD;

asigurarea integritații BD;

asigurarea sincronizării in cazul utilizării simultane a BD de mai multi utilizatori sau a distribuirii informației pe mai multe sisteme.

In raport de modul de exploatare a BD, utilizatorii se impart in urmatoarele clase:

utilizatorii obișnuiți sunt utilizatorii care obțin informațiile fără a avea cunostințe de programare;

programatorii de aplicații scriu programe in limbajul de cereri, acestea sunt apoi compilate și memorate in fișiere program, putând fi lansate în execuție prin invocarea numelui asociat lor.

Administratorul bazei de date este cel care stabilește structura initială a bazei de date și modul de memorare a datelor la nivel fizic, acorda utilizatorilor dreptul de acces la baza de date sau parți ale ei, stabilește condițiile pentru asigurarea securității si integrității datelor, modifică structura BD dacă este nevoie, asigură intreținerea BD făcând copii periodice și reconstituind BD în cazul în care au apărut erori și răspunde de modul de utilizare a bazei de date.

Administratorul sistemului de baze de date, care stabileste bazele de date de pe un sistem de calcul, alocă spații de memorare și asigura drepturi de acees. Cele mai multe SGBD-uri conțin și o colecție de utilitare folosite în diferitele aplicații, cum sunt:

procesoare de limbaje de cereri;

editoare de rapoarte;

subsisteme de reprezentări grafice;

posibilități de lucru tabelat;

procesoare de limbaje naturale;

programe statistice;

generatoare de aplicatii.

Modelul relațional al bazei de date și schema fizică

Schema fizică:

ACCES (idu, nume, parolă, idp)

UTILIZATORI(idp, nume, prenume, adresă, telefon, email, CNP, admin)

PROGRAMĂRI(id_prog, data, ora, observații, efectuat, idp)

TRATAMENT (idt, tip_lucrare, pret)

TRATAMENT_LUCRARE (idt, idl, cantitate, data, pret_final)

LUCRARE (idl, data, dinte, idp)

Tabela ACCES este formată din id-ul utilizatorului (idp), numele acestuia (format din nume și un număr), parola asociată numelui și id-ul înregistrării (idu) din tabela noastră. Această tabelă este folosită pentru a se loga un utilizator.

Tabela UTILIZATORI este formată din id-ul acestuia (idp) folosit pentru a face legătura către diferite tabele ( ACCES, PROGRAMĂRI, LUCRARE), numele și prenumele acestuia, adresa, numarul de telefon, emailul, CNP-ul și gradul de acces pe site (admin care poate fi 0 -nu sau 1 – da). Aceasta este pentru a stabili datele utilizatorilor.

Tabela PROGRAMĂRI este formată din id-ul programării (id_prog), data și ora la care pacientul trebuie să se prezinte, observații (în caz de medicul dorește să își planifice un tratament sau ceva legat de ședința respectivă), efectuat (cu valori null sau X – pentru da) și id-ul pacientul căruia i se planifică ședința.

Tabela Tratament este formată din id-ul tratamentului (idt), numele acestuia (tip_lucrare) și prețul standard aferent.

Tabela LUCRARE este formată din id-ul lucrării (idl) , data la care s-a efectuat , dinții la care s-a lucrat (dinte) și id-ul pacientului căruia i s-a efectuat lucrarea.

Tabela TRATAMENT_LUCRARE este formată din id-ul tratamentului aplicat (idt), id-ul lucrării la care s-a folosit (idl), cantitatea (numărul de dinți la care s-a lucrat), data și prețul final.

Modelul conceptual al datelor

Nivelul conceptual descrie structura întregii baze de date pentru o comunitate de utilizatori. La nivelul conceptual se face o descriere completă a bazei de date, ascunzând detaliile legate de stocarea fizică, concentrându-se asupra descrierii entităților, relațiilor dintre ele, precum și a restricțiilor asociate.

Schema conceptuală cuprinde:

Tabelele care formează baza de date

Structura (coloanele) fiecarei tabele

Tipul de date asociat coloanelor

Elementele pe baza carora se realizează interconectarea tabelelor (coloane comune)

Constrangeri de integritate

Operații declansate automat la modificarea unor elemente ale bazei de date

Schema conceptuală corespunzătoare bazei de date utilizată pentru creearea site-ului web:

Structura programului (aplicației web)

Site-ul web va conține mai multe pagini cu legătură între ele. Numărul acestora va fi diferit în funcție de utilizatorul site-ului. Aspectul tuturor paginilor va coincide din punctul de vedere al designului si al structurii.

Fiecare pagină a site-ului va fi împărțită în trei secțiuni:

O secțiune în partea de sus a paginii;

O secțiune în partea de jos a paginii;

O secțiune ce va cuprinde restul paginii (body-ul).

Mai jos avem wirefram-ul (schița) primei pagini (cea de log-in):

În continuare avem wirefram-ul celorlalte pagini, atât paginile de admin cât și cele pentru pacienți:

În partea de sus a paginilor, vom avea Logo-ul în partea stângă, iar in partea dreaptă link-ul către log-out, link-ul de home care face redirecționare către pagina principală de după logare și numele utilizatorului logat.

În partea de jos a paginii (footer-ul) se regăsesc drepturile de autor. Însă în pagina de logare sunt afișate și datele de contact ale medicului cât si adresa cabinetului.

În partea de body avem în stânga meniul de navigare, iar în partea dreaptă conținutul paginii respective.

Arhitectura codului sursa implementat

Principalele fișiere ale codului sursă al aplicației sunt:

Index.html – pagina de pornire a aplicației, ce cuprinde formularul de log-in, împreună cu date despre locație și date de contact.

Login.php – pagina ce face validarea celui ce încearcă să se conecteze.

Home.php – pagină de utilizator, ce este afișată după logare, cu link-urile de navigare în aplicație.

Home1.php – pagină de admin, ce este afișată după logare, cu link-urile de navigare în aplicație.

Tratamente.php – pagină ce apare atât pentru utilizator cât și pentru admin, cuprinde afișarea tratamentelor standard.

Programari.php – pagină pentru admin, ce permite alegerea de adaugare de programări sau afișarea lor.

Afișareprogramări.php – pagină pentru admin, ce permite afișarea programărilor.

Editprogramare.php – pagină pentru admin, ce conține formularul de editare al unei programări.

Adăugareprogramări.php – pagină pentru admin, ce conține formularul de adăugare al unei noi programări.

Adăugarepacienți.php – pagină pentru admin, ce conține formularul de adăugare al unui pacient nou (conține și crearea contului și a parolei utilizatorului).

Afișarepacienți.php – pagină pentru admin, ce conține tabela cu toți pacienții, împreuna cu link-uri către delete și editpacient.php (formular editare pacient), dar și afișarefișă.php ( tabel cu fișele pacientului respectiv).

Afișarefișă.php – pagină pentru admin ce mai conține și link-uri către edifișă.php ( formular editare lucrare), dar și link către afișaretratamente.php ( conține tratamentele aferente lucrării și pacientului).

afișărilucrări.php , programareuser.php, afișaretratamenteuser.php – pagini utilizator

Implementarea sistemului

Instrumente informatice utilizate în elaborarea sistemului

Pentru realizarea platformei pentru programări online am folosit tehnologiile necesare pentru crearea și administrarea unui site web:

Limbajul HTML (HyperText Markup Language) pentru crearea paginilor web;

CSS (Cascading Style Sheets) pentru formatarea elementelor documentelor HTML;

Limbajul de programare PHP (Php: Hypertext Preprocessor);

Sistemul de gestiune al bazelor de date MySQL;

phpMyAdmin folosit pentru managementul bazelor de date;

Limbajul de programare JavaScript pentru adăugarea de funcționalități în paginile web;

WampServer, un server web de tip open-source.

Medii de lucru utilizate

Pentru scrierea codului se pot utiliza diverse editoare. Pentru reazlizarea lucrării am folosit editorul de text Sublime.

Sublime  este un editor de text gratuit pentru Windows scris în C++, Python, acesta poate fi instalat și pe Linux cât și pe OS X. Programul permite editarea codului sursă specific unui număr mare de limbaje de programare, precum C, C++, Pascal, Cobol, HTML, PHP.

Facilități remarcabile sunt:

Colorare sintactică recunoaște și variabilele create de utilizator (se poate modifica de către utilizator);

Tipărirea color a codului sursă (WYSIWYG);

Autocompletare = deducerea și întregirea automată a cuvântului de cod din biblioteca utilizată;

Interfață cu mai multe ferestre (utilizează tab-uri);

Suport pentru macroinstrucțiuni.

Editare simultană pe multiple arii selectate.

Plugin-uri API bazate pe Python.

MySQL Workbench 6.2 CE este un tool pentru design-ul vizual al bazelor de date ce integrează dezvoltarea SQL, administrarea, proiectarea bazei de date, crearea și mentenanța într-un singur mediu de dezvoltare integrat pentru sistemul de baza de date MySQL. Acesta este succesorul DBDesigner 4 din fabFORCE.net și înlocuiește pachetul anterior de software, MySQL GUI Tools Bundle.

Facilități:

Suport pentru plugin-uri personalizate MSAA (Windows Accessibility API) compatibil

Suporta caracteristicile MySQL Enterprise (log Audit și MEB)

Editor SQL, completare cod și ajutor contextual

Migrare a bazei de date

WampServer acronim pentru Windows/ Apache/ MySQL/ PHP, Python,(și/ sau) Perl. Acronimul WAMP se referă la un set de aplicații gratuite ( open source ), combinte cu Microsoft Windows, care sunt frecvent utilizate în mediile de seervere Web. Stiva WAMP oferă dezvoltatorilor, cu cele patru elemente cheie ale unui Server Web: un software de sistem de operare, baze de date, server Web și Scripting Web. Utilizarea combinată a acestor programe se numește o stivă de server. În această stivă, Microsoft Windows este sistemul de operare ( OS ), Apache este serverul Web, MySQL se ocupă de componente de baze de date, în timp ce PHP, Python, sau Perl reprezintă limbaje de scripting dinamice.

Limbaje de programare utilizate

Limbajul PHP

Scurt istoric

PHP însemna inițial Personal Home Page. PHP a fost început în 1994 ca o extensie a limbajului server-side Perl, și apoi ca o serie de CGI-uri compilate de către Rasmus Lerdorf, pentru a genera un curriculum vitae și pentru a urmări numărul de vizitatori ai unui site. Apoi a evoluat în PHP/FI 2.0, dar proiectul open-source a început să ia amploare după ce Zeev Suraski și Andi Gutmans, de la Technion au lansat o nouă versiune a interpretorului PHP în vara anului 1998, această versiune primind numele de PHP 3.0. Tot ei au schimbat și numele în acronimul recursiv de acum, până atunci PHP fiind cunoscut ca Personal Home Page Tools. Apoi Suraski și Gutmans au rescris baza limbajului, producând astfel și Zend Engine în 1999. În mai 2000 a fost lansat PHP 4.0, având la bază Zend Engine 1.0.

Popularitate

PHP-ul este unul din cele mai folosite limbaje de programare server-side, conform unui studiu efectuat de Netcraft în aprilie 2002, apărând pe 9 din cele 37 milioane de domenii cercetate în studiu. De asemenea, există un grafic al creșterii folosirii PHP-ului pe site-ul oficial. Popularitatea de care se bucură acest limbaj de programare se datorează următoarelor caracteristici :

Familiaritatea : sintaxa limbajului este foarte ușoară combinând sintaxele unora din cele mai populare limbaje Perl sau C;

Simplitatea : sintaxa limbajului este destul de liberă. Nu este nevoie de includere de biblioteci sau de directive de compilare, codul PHP inclus într-un document executându-se între marcajele speciale;

Eficiența : PHP-ul se folosește de mecanisme de alocare a resurselor, foarte necesare unui mediu multiutilizator, așa cum este web-ul;

Securitate : PHP-ul pune la dispoziția programatorului un set flexibil și eficient de măsuri de siguranță;

Flexibilitate : fiind apărut din necesitatea dezvoltării web-ului, PHP a fost modularizat pentru a ține pasul cu dezvoltarea diferitelor tehnologii. Nefiind legat de un anumit server web, PHP-ul a fost integrat pentru numeroasele servere web existente: Apache, IIS, Zeus, server, etc.;

Gratuitate : este probabil cea mai importantă caracteristică a PHP-ului. Dezvoltarea PHP-ului sub licența open-source a determinat adaptarea rapidă a PHP-ului la nevoile web-ului, eficientizarea și securizarea codului.

Utilizare

PHP este simplu de utilizat, fiind un limbaj de programare structurat, ca și C-ul, Perl-ul sau începând de la versiunea 5 chiar Java, sintaxa limbajului fiind o combinație a celor trei. Datorită modularității sale poate fi folosit și pentru a dezvolta aplicații de sine stătătorare, de exemplu în combinație cu PHP-GTK sau poate fi folosit ca Perl sau Python în linia de comandă. Probabil una din cele mai importante facilități ale limbajului este conlucrarea cu majoritatea bazelor de date relaționale, de la MySQL și până la Oracle, trecând prin MS Sql Server, PostgreSQL, sau DB2.

PHP poate rula pe majoritatea sistemelor de operare, de la UNIX, Windows, sau Mac OS X și poate interacționa cu majoritatea serverelor web. Codul dumneavoastră PHP este interpretat de serverul WEB și generează un cod HTML care va fi văzut de utilizator (clientului -browserului- fiindu-i transmis numai cod HTML).

PHP foloseste extensii specifice pentru fișierele sale: .php, .php3, .ph3, .php4, .inc, .phtml. Aceste fișiere sunt interpretate de catre serverul web iar rezultatul este trimis în formă de text sau cod HTML către browser-ul clientului.

Sintaxa

Clasicul program hello-world în PHP:

<?php

echo "Salut!";

?>

Sintaxa de mai sus este simplificată de programatorii avansați astfel:

<?="Salut!"?>

Limbajul JavaScript

JavaScript este un limbaj de programare orientat obiect bazat pe conceptul prototipurilor. Este folosit mai ales pentru introducerea unor funcționalități în paginile web, codul Javascript din aceste pagini fiind rulat de către browser. Limbajul este binecunoscut pentru folosirea sa în construirea siturilor web, dar este folosit și pentru acesul la obiecte încastrate (embedded objects) în alte aplicații. A fost dezvoltat inițial de către Brendan Eich de la Netscape Communications Corporation sub numele de Mocha, apoi LiveScript, și denumit în final JavaScript.

În ciuda numelui și a unor similarități în sintaxă, între JavaScript și limbajul Java nu există nicio legătură. Ca și Java, JavaScript are o sintaxă apropiată de cea a limbajului C, dar are mai multe în comun cu limbajul Self decât cu Java.

Până la începutul lui 2005, ultima versiune existentă a fost JavaScript 1.5, care corespunde cu Ediția a 3-a a ECMA-262, ECMAScript, cu alte cuvinte, o ediție standardizată de JavaScript. Versiunile de Mozilla începând cu 1.8 Beta 1 au avut suport pentru E4X, care este o extensie a limbajului care are de a face cu XML, definit în standardul ECMA-357. Versiunea curentă de Mozilla, 1.8.1 (pe care sunt construite Firefox și Thunderbird versiunile 2.0) suportă JavaScript versiunea 1.7.

Utilizare

Cea mai des întâlnită utilizare a JavaScript este în scriptarea paginilor web. Programatorii web pot îngloba în paginile HTML script-uri pentru diverse activități cum ar fi verificarea datelor introduse de utilizatori sau crearea de meniuri și alte efecte animate.

Browserele rețin în memorie o reprezentare a unei pagini web sub forma unui arbore de obiecte și pun la dispoziție aceste obiecte script-urilor JavaScript, care le pot citi și manipula. Arborele de obiecte poartă numele de Document Object Model sau DOM. Există un standardW3C pentru DOM-ul pe care trebuie să îl pună la dispoziție un browser, ceea ce oferă premiza scrierii de script-uri portabile, care să funcționeze pe toate browserele. În practică, însă, standardul W3C pentru DOM este incomplet implementat. Deși tendința browserelor este de a se alinia standardului W3C, unele din acestea încă prezintă incompatibilități majore, cum este cazul Internet Explorer.

O tehnică de construire a paginilor web tot mai întâlnită în ultimul timp este AJAX, abreviere de la „Asynchronous JavaScript and XML”. Această tehnică constă în executarea de cereri HTTP în fundal, fără a reîncărca toată pagina web, și actualizarea numai anumitor porțiuni ale paginii prin manipularea DOM-ului paginii. Tehnica AJAX permite construirea unor interfețe web cu timp de răspuns mic, întrucît operația (costisitoare ca timp) de încărcare a unei pagini HTML complete este în mare parte eliminată.

Limbajul HTML

Hyper Text Markup Language (HTML) este un limbaj de marcare utilizat pentru crearea paginilor web ce pot fi afișate într-un browser (sau navigator). Scopul HTML este mai degrabă prezentarea informațiilor – paragrafe, fonturi, tabele ș.a.m.d. – decât descrierea semanticii documentului.

Introducere

HTML este o limbaj pentru crearea paginilor web.

HTML vine de la Hyper Text Markup Language;

HTML este un limbaj de marcare;

Un limbaj de marcare este un set de tag-uri de marcare;

Tag-urile descriu conținutul documentului;

Documentele HTML conțin tag-uri HTML și text simplu;

Documentele HTML sunt numite și pagini web.

Tag-urile HTML

Tag-urile de marcare HTML de obicei sunt numite tag-uri HTML

Tag-urile HTML sunt cuvinte cheie (numele tag-ului) scrise între paranteze unghiulare sub forma <html>;

Tag-urile HTML în mod normal apar în perechi de forma: b și /b;

Primul tag din pereche este tag-ul de start iar al doilea este tag-ul de sfârșit;

Tag-ul de sfârșit este scris la fel ca tag-ul de început dar are un slash înainte de numele tag-ului;

Tag-urile de început și de sfârșit mai sunt numite și tag-uri de deschidere și de închidere.

Exemplu de tag-uri: <tagname>content</tagname>

Strunctura unei pagini HTML

Mai jos avem o vizualizare a unei structuri de pagină HTML

CSS

CSS (Cascading Style Sheets) este un standard pentru formatarea elementelor unui document HTML. Stilurile se pot atașa elementelor HTML prin intermediul unor fișiere externe sau în cadrul documentului, prin elementul <style> și/sau atributul style. CSS se poate utiliza și pentru formatarea elementelor XHTML,XML și SVGL.

Introducere

CSS vine de la Cascading Style Sheets;

Stiluride definesc cum să arate elementele HTML;

Stilurile au fost adăugate la HTML 4.0 pentru a rezolva o problemă;

Fișierele de stiluri externe pot salva o mulțime de muncă;

Fișierele de stiluri externe sunt salvate în fișiere CSS.

CSS-urile definesc cum vor arăta elemenetele HTML.

Stilurile sunt în mod normal salvate în fișiere externe cu extensia .css. Fișierele de stiluri externe își permit să schimbi aspectul și layout-ul tuturor paginilor dintr-un site Web doar prin editarea unui singur fișier.

MySQL – serverul de baze de date

MySQL este un sistem de gestiune a bazelor de date relațional, produs de compania suedeza MySQL AB și distribuit sub Licența Publică Generală GNU. Este cel mai popular SGBD open-source la ora actuală[1], fiind o componentă cheie a stivei LAMP (Linux, Apache, MySQL, PHP).

Deși este folosit foarte des împreună cu limbajul de programare PHP, cu MySQL se pot construi aplicații în orice limbaj major. Există multe scheme API disponibile pentru MySQL ce permit scrierea aplicațiilor în numeroase limbaje de programare pentru accesarea bazelor de date MySQL, cum are fi: C, C++, C#, Java, Perl, PHP, Python, FreeBasic, etc., fiecare dintre acestea folosind un tip spefic API. O interfață de tip ODBC denumită MyODBC permite altor limbaje de programare ce folosesc această interfață, să interacționeze cu bazele de date MySQL cum ar fi ASP sau Visual Basic. În sprijinul acestor limbaje de programare, unele companii produc componente de tip COM/COM+ sau .NET (pentru Windows) prin intermediul cărora respetivele limbaje să poată folosi acest SGBD mult mai ușor decât prin intermediul sistemului ODBC. Aceste componente pot fi gratuite (ca de exemplu MyVBQL) sau comerciale.

Licența GNU GPL nu permite încorporarea MySQL în softuri comerciale; cei care doresc să facă acest lucru pot achiziționa, contra cost, o licență comercială de la compania producătoare, MySQL AB.

MySQL este componentă integrată a platformelor LAMP sau WAMP (Linux/Windows-Apache-MySQL-PHP/Perl/Python). Popularitatea sa ca aplicație web este strâns legată de cea a PHP-ului care este adesea combinat cu MySQL și denumit Duo-ul Dinamic. În multe cărți de specialitate este precizat faptul ca MySQL este mult mai ușor de invățat și folosit decât multe din aplicațiile de gestiune a bazelor de date, ca exemplu comanda de ieșire fiind una simplă și evidentă: „exit” sau „quit”.

Pentru a administra bazele de date MySQL se poate folosi modul linie de comandă sau, prin descărcare de pe internet, o interfață grafică:MySQL Administrator și MySQL Query Browser. Un alt instrument de management al acestor baze de date este aplicația gratuită, scrisă în PHP, phpMyAdmin.

phpMyAdmin

Cu ajutorul lui phpMyAdmin se poate gestiona un întreg server MySQL dar și o singură bază de date. Pentru a realiza aceasta din urmă trebuie să setați corespunzător useri MySQL care pot citi/scrie în baza de date dorită.

Caracteristici

Momentan phpMyAdmin poate:

Căuta și șterge baze de date, tabele, vizualizări, coloane și indecși;

Afișează mai multe seturi de rezultate prin proceduri sau interogări;

Crează, copie, șterge, redenumește și modifică baze de date, tabele, coloane și indecși;

Întreținerea server-ului, bazei de date și tabelelor, cu propuneri pentru configurarea server-ului;

Execută, editează și marchează orice SQL;

Încarcă fișiere text în tabele;

Crează și citește tabele;

Gestionează utilizatorii și privilegiile MySQL;

Utilizând Query-by-example (QBE), crează înterogări complexe conectând automat tabelele cerute;

Urmărește modificările din baza de date, tabele și vizualizări;

Crează, editează, apelează, exportă și șterge proceduri stocate și funcții;

Crează, editează, apelează, exportă și șterge evenimente ți triggere;

Comunică în 62 de limbi.

Apache

Apache este un server HTTP de tip open source care este folosit de aplicația WampServer. Apache a jucat și joacă un rol important în dezvoltarea webului, fiind folosit în prezent în circa 65.2 % din paginile web. Cuvântul apache este numele apașilor, triburi de amerindieni.

Apache este un server web cu o contribuție notabilă la dezvoltatea Internetului (world wide web). Apache a reprezentat prima alternativă viabilă la Netscape Communications Corporation, și a evoluat rapid în funcționalitate și performanță ca un rival competitiv pentru alte servere web bazate pe Unix.

Apache este dezvoltat de o comunitate deschisă de programatori sub emblema Apache Software Foundation. Aplicația este disponibilă pentru o mare varietate de sisteme de operare incluzând Unix, FreeBSD, Linux, Solaris, Novell NetWare, Mac OS X, Microsoft Windows siOS/2.

Serverul Apache este caracterizat ca fiind un software gratuit și open source, acesta făcând ca, începând din aprile 1996, el să fie cel mai popular server HTTP. Cu toate că în noiembrie 2005 a început să piardă din cota de piață, în aprilie 2008 Apache stătea încă la baza a peste 50 % din siturile web, iar în iunie 2013 a ajuns la 65.2%.

Prima versiune a serverului a fost creată de Robert McCool, care la vremea aceea era implicat în proiectul National Center for Supercomputing Applications, cunoscut pe scurt ca NCSA HTTPd. A doua versiune a serverului a fost o rescriere substanțială, de data aceasta punându-se accentul pe crearea unui layer prioritar (Apache Portable Runtime) și a suportului de module.

Principalul competitor al serverului Apache este Microsoft Internet Information Services (IIS), urmat de Sun Java System Web Server al companiei Sun Microsystems și multe altele, cum ar fi Zeus Web Server.

Apache este folosit de unele din cele mai mari situri din lume. Astfel, motorul de căutare folosit de Google folosește o versiune modificată de Apache numită Google Web Server (GWS); și proiectele Wikimedia inclusiv Wikipedia rulează tot pe un server Apache.

Implementarea aplicației

În urma creării fișierelor index.html (reprezentând prima pagină) avem următorul rezultat:

În partea stângă a paginii putem observa logo-ul împreună cu formularul de log-in, iar în partea de jos a paginii se află footer-ul cu date informative. Prin intermediul formularului din stânga se va valida tipul de utilizator. Astfel după completarea user-ului și a parolei se va apăsa pe butonul de log-in, care va face trimitere către login.php unde se realizează conexiunea la baza noastră de date:

$connection = @mysql_connect("localhost", "root", "");

$db = mysql_select_db("cabinet", $connection);

După care se verifică dacă user-ul și parola se regăsesc în baza noastră de date și dacă există se vor salva într-o sesiune, aceste date fiind folosite pe parcursul navigării:

$query = mysql_query("select * from acces where parola='$password' AND nume='$username'", $connection);

$rows = mysql_num_rows($query);

if ($rows == 1) {

$row = mysql_fetch_array($query);

$_SESSION['login_user']=$username; // Initializing Session

$_SESSION['idp']=$row['idp']; // Initializing Session

Pe pagina editpacient.php avem următorul formular:

Primul câmp este id-ul utilizatorului, acesta este cu gri deoarece nu poate fi modificat. La ’Admin’ avem un dropdown list de unde medicul va hotărî, dacă utilizatorul respectiv poate fi admin sau nu. După terminarea editării, dacă toate câmpurile sunt completate, la apăsarea butonului ’Trimiteți’, se va efectua următorul cod pentru a face update-ul la baza de date a serverului:

if(isset($_POST['submit'])){

$nume = $_POST['nume'];

$prenume = $_POST['prenume'];

$adresa = $_POST['adresa'];

$telefon = $_POST['telefon'];

$CNP = $_POST['CNP'];

$email = $_POST['email'];

$admin = $_POST['taskOption'];

$query3 = "UPDATE utilizator set nume='$nume' , prenume='$prenume', adresa ='$adresa', telefon ='$telefon', CNP = '$CNP', email = '$email', admin = '$admin' WHERE idp = '$idp'";

$result = mysqli_query($conn, $query3);

În pagina de adăugare pacient/admin avem următorul formular:

Câmpul de sub ’Nume_Nr’ constituie atât numele utilizatorului cât și user-ul cu care acesta se va loga de aceea numele va conține și un număr pentru a face diferențiere între pacienții cu același nume de familie.

După completarea tuturor câmpurilor la apăsarea butonului ’Adauga’ se fa efectua următorul cod ce introduce datele în baza de date:

$sql = "INSERT INTO utilizator (idp, nume, prenume, adresa, telefon, cnp, email, admin)VALUES ('', '$nume','$prenume', '$adresa', '$telefon', '$cnp', '$email','$admin')";

$result = mysqli_query($conn, $sql);

$idp1 = mysqli_insert_id($conn);

$sql1 = "INSERT INTO acces (idu, idp, nume, parola) VALUES ('', '$idp1', '$nume', '$parola')";

$result1 = mysqli_query($conn, $sql1);

’$idp1 = mysqli_insert_id($conn);’ această instrucțiune memorează în $idp1, id-ul pacientului introdus prin intermediul ’Insert-ului’ de mai sus pentru a fi folosit la crearea user-ului și a parolei.

În anumite pagini avem următorul form:

Acesta este un form în care pe parcurs ce utilizatorul scrie ceva, scriptul ce stă la baza acestui form, va căuta în conținutul paginii ceea ce tastăm, iar ce găsește este colorat într-o culoare random. Se pot scrie mai multe cuvinte, acestea fiind colorate diferit. Butonul de reset este pentru a înlătura colorarea cuvintelor din conținutul corpului.

<script type="text/javascript">

var myHilitor2;

document.addEventListener("DOMContentLoaded", function() {

myHilitor2 = new Hilitor("playground");

myHilitor2.setMatchType("left");}, false);

document.getElementById("search").addEventListener("keyup", function() {

myHilitor2.apply(this.value);}, false);

document.getElementById("remove").addEventListener("click", function() { myHilitor2.remove();
document.getElementById("search").value="";}, false);

</script>

Locul unde se vor căuta cuvintele cheie este definit de următorul segment de cod:

var myHilitor2;

document.addEventListener("DOMContentLoaded", function() {

myHilitor2 = new Hilitor("playground");

myHilitor2.setMatchType("left");}, false);

’playground’ fiind numele div-ului în care se află conținutul, unde se vor face căutările.

document.getElementById("search").addEventListener("keyup", function() {

myHilitor2.apply(this.value);}, false);

În imaginea de mai sus, este setat textfield-ul de unde se vor prelua cuvintele, pe care utilizatorul vrea să le caute.

document.getElementById("remove").addEventListener("click", function() { myHilitor2.remove();
document.getElementById("search").value="";}, false);

La apăsarea butonului ’Reset’, ce are id-ul ’remove’, câmpul cu id-ul ’search’ va lua valoarea null, astfel culorile din div-ul ’playground’ înlăturate.

În pagina adaugaretratament.php avem următorul formular:

Câmpurile pentru ’Pret final’ și pentru ’Tip tratament’ au în spate un fișier javascript folosit în paginile suggest_tratament.php și suggest_pret.php. La începerea tastării unui tratament, după ce am înserat două caractere scriptul va cauta în baza de date și va returna tratamente ce conțin acel grup de litere. După selectarea lui acesta va fi afișat ca și în baza de date. Însă în cazul tastării unui tratament în câmpul destinat prețului final după selectarea tratamentului acesta va afișa prețul standard aferent tratamentului din baza de date.

$(document).ready(function(){

$('#tratamentAutocomplte').autocomplete({

source:'suggest_tratament.php',
minLength:2,
select: function(event,ui){

$("#idt").val(ui.item.id);},

}});

Se va accesa fișierul sursă suggest_tratament.php după introducerea de minim două caractere. În urma căutării grupului de cuvinte, dacă avem un rezultat se vor salva numele tratamentului și id-ul său și se va afișa doar numele tratamentului id-ul rămănând ascuns.

if ($data = $mysqli->query("SELECT * FROM tratament WHERE tip_lucrare LIKE '%$term%' ORDER BY tip_lucrare")) {

while($row = mysqli_fetch_array($data)) {

$tip_lucrare = htmlentities(stripslashes($row['tip_lucrare']));

$idt = htmlentities(stripslashes($row['idt']));

$a_json_row["id"] = $idt;

$a_json_row["value"] = $tip_lucrare;

$a_json_row["label"] = $tip_lucrare;

Asemănător este și pentru prețul tratamentului, dar în loc de ’$tip_tratament’ la ’value’ avem ’$pret_final’.

În pagina de afisareprogramari.php, adminul va putea șterge o programare dând click pe ’Delete’-ul din dreptul programării ce se vrea a fi ștearsă.

<td> <a href='#' onclick='redir(".$row['id_prog'].");return false;' >Delete</a></td>";

Acestă linie de cod înregistrează id-ul programării ce se vrea a fi ștearsă și apelează funcția din script

function redir(id_prog){

if(confirm ("Sunteti sigur ca vreti sa stergeti")){

var s = "afisareprogramari.php?id_prog="+id_prog+"&c=delete";

location.replace(s);}}

Se va afișa un pop-up pentru confirmarea ștergerii. În urma confirmării, pagina va deveni

‚http://localhost/dentistwebtemplate/afisareprogramari.php?id_prog=13&c=delete’

Astfel ‚c’ luând valoarea ’delete’, verificându-se acest lucru programarea se va șterge după cum este în codul următor:

if(isset($_GET['c']) && $_GET['c'] == 'delete' ){

$conn = mysqli_connect("localhost", "root", "", "cabinet");

$id_prog=$_GET['id_prog'];

$sql = "DELETE FROM programare WHERE id_prog = '$id_prog'";

$query = mysqli_query($conn, $sql);

}

7 Manualul utilizatorului

După logare pacientul va putea observa următoarea pagină:

Pe celelalte pagini se va modifica doar partea de conținut, fiind afișate diferite tabele.

Medicul/asistenta vor avea o altă interfață pentru început:

Pagina pentru programări este identica cu cea de mai sus, butoanele din dreapta au nume sugestive facând redirectare către pagina respectivă.

În urma accesării paginii ’Afisare Pacienti’ vom avea o pagină asemănătoare cu cea a pacientului având în plus cele două butoane ce le putem regăsi și în printul de mai sus din partea dreaptă.

Pe pagina de adăugare tratamente la o lucrare avem următorul afișaj când completăm tratamentul cu literele ’bi’:

Accesând pagina de tratamente putem vedea tabela cu tratamentele standard și textfield-ul în care scriem ce vrem sa ne caute, iar ce gasește va fi colorat în diferite culori:

8 Concluzii

Obiectivul lucrării a fost crearea unei platforme care să permită gestionarea unui cabinet stomatologic . A fost creată o aplicație cu ajutorul căreia poate fi gestionată întreaga activitate dintr-un cabinet stomatologic. Medicul poate adăuga pacienți, poate edita datele acestora, poate să îi șteargă dacă este cazul și să îi vizualizeze. În urma creării unui pacient medicul sau asistenta/ul poate să creeze o programare pentru acesta. Pacienților li se pot crea câte o fișă ce va conține toate lucrările pacientului respectiv, iar fiecare lucrare va avea atașate tratamentele. Pacientul poate să vizualizeze programările, lucrările și tratamentele sale.

Au fost îndeplinite și alte caracteristici pe care o platformă web trebuie să le respecte. Astfel avem un site care este bine structurat, cu o interfață intuitivă și cu un timp de răspuns minim.

Trebuie specificat că pentru o astfel de aplicație este important să existe o mentenanță deoarece în domeniu se evoluează rapid. Prin urmare printr-o bună mentenanță se pot aduce îmbunătățiri asupra funcționalităților, aspectului dar și asupra utilizării.

Consider că scopul lucrării a fost atins și că sistemul obținut poate fi utilizat cu succes pentru a asigura o bună gestionare a informațiilor legate de pacienți. Pe viitor pot fi înbunătățite unele funționalități sau/și elemente de design ale site-ului.

Bibliografie

http://ro.wikipedia.org/wiki/Baz%C4%83_de_date

http://referat.clopotel.ro/Sisteme_de_gestiune_a_bazelor_de_date_S_G_B_D_-7924.html

http://ro.wikipedia.org/wiki/Php

http://ro.wikipedia.org/wiki/Javascript

http://ro.wikipedia.org/wiki/HyperText_Markup_Language

http://www.w3schools.com/html/html_intro.asp

http://ro.wikipedia.org/wiki/CSS

http://www.w3schools.com/css/css_intro.asp

https://en.wikipedia.org/wiki/Sublime_Text

http://ro.wikipedia.org/wiki/MySQL

https://media.readthedocs.org/pdf/phpmyadmin/latest/phpmyadmin.pdf

http://ro.wikipedia.org/wiki/Apache_(server)

http://www.webopedia.com/TERM/W/WAMP.html

http://www.the-art-of-web.com/javascript/search-highlight/

http://www.sitepoint.com/style-web-forms-css/

http://www.csstablegenerator.com/?table_id=3

http://www.wowww.nl/2014/02/01/jquery-autocomplete-tutorial-php-mysql/

http://www.formget.com/login-form-in-php/

Similar Posts