Aplicatii Informatice din Domeniul Medical

Introducere

Lucrarea de disertație are ca scop implementarea unei vederi sigure și individualizate a resurselor online disponibile și a serviciilor interactive cu privire la informațiile medicale.

Aplicatia are ca menire crearea unui mediu online pentru a oferi suport suplimentar pacienților, doctorilor, chiar și atunci când sunt în mișcare, prin facilitarea accesului la o varietate de informații utile. Aplicatia are in vedere setarea unei noi tendinte în industria medicala, prin oferirea accesului mai rapid la toate facilitatile oferite de acest operator pe piata serviciilor medicale private.

Scopul aceste aplicatii este de a permite pacienților inregistrati sa isi mentina un profil de sanatate personal online, prin accesarea in mod facil a informatiilor de sanatate cu caracter personal.

Aplicatia doreste sa puna la dispozitie aceste informatii in mod gratuit pentru informarea si uzul personal al pacientilor, prin centralizarea tututor informatiilor, oferind pacientilor acces la propriul dosar medical.

1.1 Activitățile principale intr-o clinica medicala

In etapa actuala de dezvoltare a societatii omenesti, specificul, ritmul si rasunetul calitativ al progresului tehnic si tehnologic determina o noua revolutie.

Datorita evolutiei tehnologiilor informatizate suntem condusi catre o societate informatica, in care manipularea datelor informatizate capata o importanta din ce in ce mai mare extinzandu-se in diverse domenii de activitate umana, chiar si in afara celor informatice: documentare, invatamant, cercetare, medicina, transporturi, comunicatii, proiectare, activitati industriale etc.

Conform [PM1] expresia “activitate informatizata” poate desemna orice activitate realizata cu ajutorul unui calculator, direct sau prin intermediul unui terminal mai mult sau mai putin indepartat. Aceste sarcini care pot fi regrupate sub aceasta denumire generala, sunt diverse, atat din punct de vedere al aspectului continutului si obiectivelor, cat si din punct de vedere al competentelor cerute sau exigentelor adresate. Unele dintre aceste sarcini sunt proprii informaticii insasi, ele contribuie la prepararea unui instrument, spre exemplu cazul activitatii de programare. In aceeasi situatie este inclus ansamblul de sarcini de introducere de date si informatii in calculator, prin intermediul dotarii cu un ecran, o tastatura, etc.

In alte sarcini informatica nu este decat un mijloc, aceste sarcini avand propriul lor obiectiv.

In acest caz se vorbeste de o activitate asistata de informatica, aceasta expresie de utilizare fiinf restransa in raport cu anumite sarcini intelectuale precum: documentare, informare asistate de calculator, diagnostic, concepere asistata, proiectare, etc.

Gradeele de informatizare variaza in functie de nivelul ajutorului pe care un operator il primeste din partea informaticii, dar si in functie de timpul pe care operatorul il consacra acestuia. Spre exemplu, diagnosticul medical pe baza de sistem expert, cercetarea documentara, prelucrarea de date, etc. La cealalta extrema se afla cazurile in care intreaga activitate consta dintr-un dialog permanent cu calculatorul, instrumentele folosite pentru implementarea solutiei devenind o conditie obligatorie pentru desfasurarea activitatii.

Nu se poate vorbi deci, de o maniera generala de activitati informatizate fara a se lua in calcul urmatoarele variabile: tipul de sarcina, tipul de operatori, tipul competentelor cerute, tipul performatelor, exigentele specifice.

Tipul de sarcina sau nivelul de dificultate al sistemului este unul complex, intrucat trebuie sa acopere toate nevoile pacientului, dar si nevoile doctorului, utilizand instrumentele existente la nivelul actual.

Tipul de operatori pot fi determinati in functie de nevoia utilizatorului, acestia pot fi ocazionali sau permanenti.

Tipul competentelor cerute pentru sistem reprezinta activitatea minima si necesara atat pentru pacienti cat si pentru doctori.

Tipul performantelor poate fi evaluat din prisma acoperirii nevoilor utilizatorilor, prin utilizarea aplicatiei.

Problemele ridicate de informatizarea diverselor activitati, necesita o atentie deosebita acordata activitatii. Obiectivele principale ale acestor analize sunt reprezentate de: descrierea sarcinilor, descrierea operatiilor, caracterizarea competentelor cerute, identificarea exigentelor adresate utilizatorilor, evidentierea unor eventuale disfunctii.

Sarcinile pe care sistemul trebuie sa le acopere consta in: asistarea utilizatorului oriunde, pentru orice problema intampinata prin oferirea rapida si la indemana a tuturor informatiilor necesare.

Competentele cerute pentru aplicatie sunt: accesul usor si rapid, prezentarea informatiilor printr-o interfata prietenoasa, servicii realizate de catre utilizator (spre exemplu:programare sau vizualizarea analizelor) fara sa fie nevoie de ajutorul unui operator.

Pentru identificarea exigentelor adresate utilizatorilor, s-au analizat existentele solutii on-line, impreuna cu feedback-l primit de la utilizatori.

Prezenta unor eventuale disfunctii a aplicatiei a fost evitata prin utilizarea unei baze de date stabila, a unui mediu de dezvoltare si al unui limbaj de programare de actualitate, alaturi de o interfata user-friendly, intuitiva.

1.2 Prezentarea activității ce va fi informatizată.

Din punct de vedere al utilizatorului acesta poate accesa sistemul diferit in functie de rolul pe care il indeplineste.

Pentru un utilizator fara cont, clinica medicala este precum o carte de vizita in care poate vizualiza rapid si la indemana toate informatiile de care are nevoie. Pagina de home prezinta succint ofertele clinicii: medicina familiei, servicii 24 ore, doctori calificati, serviciul ambulanta, departamente si servicii specializate. Tot in prima pagina utilizatorul isi poate crea singur o programare fara a mai fi nevoie de apelarea unui operator. De asemenea, daca utilizatorul are o recomandare sau doreste sa mearga la consultatia unui anumit medic, il poate cauta cu ajutorul functiei "Cauta un doctor", fara a mai fi nevoie de a preciza departamentul sau clinica.

Pentru a oferi o scurta prezentare despre clinica medicala, utilizatorul poate accesa pagina "Despre noi" unde se poate convinge de viziunea clinicii, misiunea acesteia si valorile pe care pune pret, odata cu cei mai renumiti doctori care lucreaza in cadrul clinicii.

Pentru a asigura utilizatorii nu doar de calitatea resurselor umane ci si de cea a resurselor materiale, clinica scoate in evidenta unele dintre cele mai noi dotari in tehnologie.

O alta functie a sistemului este acela de a oferi informatii complete nu doar asupra serviciilor ci si a locatiilor in Bucuresti si Cluj. Utilizatorul poate afla de la fiecare clinica informatii cu privire la adresa, orar, specialitati, servicii si doctori.

De asemenea, centrul dispune si de laboratoare medicale, utilizatorul putand urmari orarul, adresa, investigatiile care se efectueaza, tratamentele si specialistii.

In cazul in care utilizatorul nu stie la ce doctor poate apela, poate alege unul dintre specialistii clinicii, intrucat profilul doctorilor ii este dezvaluit, pentru a-si alege doctorul dorit pe specializare, grad profesional, competente si desigur, orar.

Prin accesarea tab-ului servicii, utilizatorul poate vedea detaliat fiecare ramura a serviciului oferit de clinica.

Accesand tab-ul analize, utilizatorul are posibilitatea de a afla pretul fiecarei analize, in functie de ramura.

Serviciul de programare este valabil in sectiunea "Programare" , dar si in fiecare pagina a meniului pentru usurinta utilizatorului.

Pentru contact, utilizatorul poate accesa tab-ul "Contact" al meniului pentru a lasa un mesaj sau doar pentru a vedea datele centrale ale fiecarei clinici si al fiecarui laborator.

Utilizatorul poate folosi aplicatia nu doar in functie de vizitator ci si din alte prisme, in functie de rolul pe care il indeplineste. Pentru aceasta, un utilizator, se poate inregistra. La accesarea paginii de "Log in", acesta este sfatuit sa se inregistreze daca nu are cont. In urma inregistrarii sale, acesta se poate autentifica cu cnp-ul si cu parola. Daca doreste ca datele sale de autentificare sa fie retinute, poate bifa optiunea: "Tine-ma minte pe acest calculator", astfel acesta se poate autentifica oricand doreste fara a mai fi nevoit sa introduca iar datele.

Utilizatorul cu rolul de client dispune pe langa aceleasi functii ca si utilizatorul "vizitator" , de functii precum administrarea contului sau, programarile sale, analizele efectuate si istoricul vizitelor.

In sectia "Date personale" acesta isi poate edita datele cu care a fost inregistrat, dar si adauga o imagine. In cazul in care utilizatorul nu isi aminteste o programare realizata, acesta o poate vedea la "Programari", aici vizualizand ora si data la care este programat, impreuna cu numele doctorului, centrul si specialitatea.

De asemenea utilizatorul are acces la istoricul analizelor sale, impreuna cu istoricul vizitelor.

Din punct de vedere al utilizatorului doctor, pe langa functiile principale ale aplicatiei, acesta mai are acces la datele personale ale contului sau, orar, programarilele clientilor si analizele clientilor. La datele personale, doctorul isi poate edita aceleasi campuri pe care le detine si utilizatorul "client" dar si gradul profesional, competentele si specialitatile sale.

La sectia "Orarul meu" isi poate vedea programul pentru fiecare zi a saptamanii, la o anumita clinica, la un anumit interval orar.

Doctorul isi poate vedea clientii programati la o anumita specialitate si la un anumit centru, la data si ora si la data la care au fost programati. De asemenea, doctorul poate adauga o cerere noua pentru un set de analize , selectandu-i data, centrul si analiza pe care doreste sa o faca clientul. Odata ce setul de analize a fost primit acesta poate modifica statusul programarii, din "netratat" in "tratat". Analizele si statusul acestora pot fi vazute la sectia "Analize clienti", pentru detalii, se selecteaza analiza pentru a vedea rezultatul final al analizei efectuate. Rezultatul analizei este specificat de catre administrator.

Din punct de vedere al administratorului, acesta are sectia "Contul meu" cu date personale. In functie de rolurile pe care administratorul le acorda, un utilizator poate avea mai multe roluri simultan, spre exemplu: administrator si doctor, sau administrator si client. Atunci administratorul vede si celelealte functionalitati accesibile clientilor, doctorilor si managerilor : programari, istoric analize si istoric programari.

Admin-ul este singurul utilizator care poate administra: useri, centre, specialitati, servicii, categorii analize, analize, orar doctori, servicii doctori, cereri programari, programari clienti, analize clienti, contacte.

Pentru administrarea userilor acesta poate adauga, edita si sterge utilizatori. Totodata este singurul care poate schimba rolul unui utilizator si alte informatii legate de acesta in functie de rolul pe care il indeplineste. Spre exemplu, unui doctor ii poate adauga o specialitate. Aici este prezenta si functia search "Cauta un user", pentru a usura munca administratorului, intrucat userii sunt afisati intr-un tabel.

Pentru administrarea centrelor, admin-ul poate cauta/adauga/edita o clinica sau un laborator, introducand numele clinicii, tara si orasul in care se afla, adresa, numarul de telefon, email-ul si o imagine reprezentativa fiecarei clinici sau fiecarui laborator.

Utilizatorul cu dreptul de admin poate indeplini actiunile de: cautare/adaugare/editare/stergere a unei specialitati, al unui serviciu, al unei categorii de analize si al unei analize.

Sectia "Administrare orar" prezinta un tabel cu orarul doctorilor cu specialitate la clinica/laborator, dintr-o anumita zi, la un anumit interval orar. Admin-ul are dreptul de a adauga/edita/sterge un orar pentru un anumit doctor si de a cauta orarul unui doctor.

Serviciile doctorilor sunt monitorizate de catre administrator intrucat acesta poate vedea specialitatea fiecarui doctor, serviciul pe care il ofera si pretul pe care il incaseaza. Si aici sunt prezente functiile de cautare/adaugare/editare/stergere.

Cererile de programari ajung in final la administrator, acesta avand dreptul de a le edita si de a da verdictul final : "tratat", "netratat", "client neprezentat".

Rezultatele analizelor sunt introduse tot de catre administrator, acesta avand posibilitatea de a da rezultatul analizei efectuate si de a lasa un comentariu pe baza analizei.

1.3 Aplicații informatice din domeniul medical.

Aplicatiile on-line pentru domeniul medical au luat amploare in ultimul an in Romania, printre acestea se numara: Medlife, Medicover, Regina Maria, etc.

1. Medlife

Sistemul online Medlife se ocupa cu centralizarea datelor pacientilor, oferirea unei liste publice a doctorilor si a orarului acestora. O alta functionalitate a acestui sistem consta in salvarea analizelor pacientilor, calcularea indecelui de masa corporala al pacientilor, urmarirea unui calendar de sarcini a fiecarui pacient.

2. Medicover

Scopul Aplicatiei Medicover este de a oferi acces la lista medicilor si a clinicilor, precum si locatia celei mai apropiate clinici. De asemenea permite pacientilor programarea prin intermediul aplicatiei, clientii pot alege locatia si medicul pentru urmatoarea consultatie si pot vedea rezultatele analizelor si investigatiilor.

3. Regina Maria

Scopul aplicatiei Regina Maria este de a oferi cadrelor medicale accesul la programul zilnic de consultatii si la lista pacientilor programati in fiecare clinica. De asemenea ofera optiunea de recomandare a un pacient la un alt medic.

Tehnologii informatice utilizate.

Tehnologiile utilizate pentru dezvoltarea clinicii medicale sunt: MySql, Eclipse, limbajul de programare Java si limbajul UML.

2.1 MySQL

Conform [MYSQL1] MySql este cea mai populata baza de date open source din lume care permite implementarea cu costuri rezonabile a unor baze de date incorporate si web fiabile, performante si scalabile.

Bazele de date sunt folosite pentru stocarea informatiilor in vederea furnizarii ulterioare in functie de solicitarea primita. MySql este un sistem de baze de date independent, cel mai popular SGBD open-source la ora actuala, cu ajutorul sau se pot construi aplicatii in orice limbaj major. Existenta multor scheme API disponibile pentru MySql permite scrierea aplicatiilor in numeroase limbaje de programare pentru accesarea bazelor de date MySql, precum: C, C++, C#, Java, Perl, Php, Phyton,etc. Pentru a administra bazele de date MySql, se poate folosi modul linie de comanda sau, prin descarcarea de pe internet, o interfata grafica. Pentru implementarea aplicatiei clinica medicala, am utilizat MySQL Workbench. Am ales aceasta componenta deoarece poate fi rulata pe mai multe platforme software existente, dintre care si cea pe care am folosit-o, Windows 7.

Acest sistem de gestiune al bazelor de date, este gratuit si poate fi folosit impreuna cu java, lucru care ajuta la o buna filtrare a datelor. Aceste baze de date se numeste SQL(Structed Query Language), care este un limbaj simplu, insa foarte puternic. Ajuta la o buna stocare a informatiilor, o extragere a acestora dupa anumite conditii si o buna filtrare a informatiilor adaugate.[MYSQL1]

Sunt incluse facilități majore ale modelului relațional clasic, precum cereri declarative în SQL,

optimizarea interogării, controlul concurent, tranzacții, suport multiutilizator. De asemenea

pentru a putea realiza programarea in Java, am folosit driverul JDBC, deoarece s-au scris clase

Java dedicate facilității accesării MySQL.

Acest sistem de baze de date suportă chei străine, join-uri, view-uri, trigger-e și proceduri

stocate(într-o varietate de limbaje de programare), fiind un motor de baze de date de nivel

enterprise. De asemenea, acest sistem de baze de date relaționale oferă o funționalitate

comparabilă cu oricare server de baze de date comercial. O prezentare a caracteristicilor mai

puțin uzuale, printre care se numără moștenirea și posibilitatea de a defini reguli, operatori,

funcții de agregare și triggers.

Datorită faptului ca lucrarea de dizertatie presupune un număr mai putin considerabil de inregistrări in cadrul bazei de date, am ales MySQL care este mai orientat spre performanță la citirea datelor.

În concluzie, prin disponibilitate și prin facilitatile oferite, am ales MySql deoarece l-am

considerat util pentru a dezvolta aplicatie, fara achiziționare de software.

2.2 Eclipse

În ceea ce privește mediul de dezvoltare a licenței am ales platforma Eclipse. Acest mediu de

dezvoltare facilitează scrierea programelor, iar datorita faptului că pentru dezvoltarea lucrării de

licență am utilizat limbajul Java am optat pentru acest mediu deoarece este folosit in special de

programatorii Java, însa fiind un program extensibil oferă posibilitatea integrării cu orice limbaj

de programare.

Am optat pentru utilizarea limbajului de programare Java deoarece este un limbaj de programare orientat-obiect care m-a ajutat să asociez mai ușor modele de date cu obiectele. De asemenea am ales sa utilizez platforma deschisă Eclipse deoarece este un mediu integrat de dezvoltare, ce oferă facilități de management al spațiului de lucru, creare, lansare, depanare aplicații.

Dezvoltarea de aplicații complexe java care de obicei conțin mai multe fișiere sursa poate deveni

foarte dificila, de aceea am ales să îmi instalez pe lângă platforma J2SE, aplicația IDE(Integrated

Development Environment).

2.3 Limbajul de programare Java

Am ales limbajul de programare Java deoarece este un limbaj orientat obiect, puternic tipizat.

Cele mai multe aplicatii distribuite sunt scrise in Java, iar noile evolutii tehnologice permit utilizarea sa si pe dizpozitive mobile, agenda electronica, etc. In felul acesta se creeaza o platforma unica, la nivelul programatorului, deasupra unui mediu eterogen extrem de diversificat. Limbajul imprumuta o mare parte din sintaxa de la C si C++, dar are un model al obiectelor mai simplu si prezinta mai putine facilitati de nivel jos. Am ales utilizarea limbajului Java deoarece un program java compilat, corect scris, poate fi rulat fara modificari pe orice platforma pe care e instalata o masina virtuala Java. Acest nivel de portabilitate este posibil deoarece sursele java sunt compilate intr-un format standard numit cod de octeti care este intermediar intre codul masina(dependent de tipul calculatorului) si codul sursa.

2.4 Limbajul UML

"Limbajul Unified Modeling Language este un limbaj standard pentru descrierea de modele si specificatii pentru software."[UML1]

Am ales limbajul UML a fost baza dezvoltat pentru reprezentarea complexitatii programelor orientate pe obiect, al caror fundament este structurarea programelor pe clase si instantele acestora(numite si obiecte). Datorita eficientei si claritatii in reprezentarea unor elemente abstracte, UML este utilizat nu doar in domeniul IT, ci si pentru managementul de proiecte, pentru business Process Design, etc.

UML ofera o gama larga de diagrame pentru modelarea diferitelor situatii in cadrul unui proiect de dezvoltare software. Asa cum si numele sugerreaza, acest tip de diagrame UML a fost folosit in dezvoltarea aplicatiei clinica medicala, prin reprezentarea desfasurarii tuturor activitarilor in rularea programului.

Am ales sa utilizez UML, deoarece “o imagine exprima cat o mie de cuvinte”. Limbajul permite realizarea mai multor view-uri, ca niste fotografii din diverse unghiuri, ale unei realitati, astfel incat aceasta realitate sa fie surprinsa prin toate aspectele ei relevante.

Capitolul 3.3.1 Specificarea cerințelor sistemului informatic

3.1 Specificarea cerințelor sistemului informatic

Analizand comportamentul pacientului modern, aflat mereu in miscare, a devenit esentiala nevoia de a oferi suport oriunde si oricand. Astfel, am identificat cerinta primordiala: necesitatea unei infrastructuri moderne care ii faciliteaza atat pacientului cat si doctorului accesul la informatii si servicii in timp util.

Cerinte ale sistemului informatic din punct de vedere al pacientului:

acces la lista medicilor si a clinicilor

descrierea echipei medicale

prezentarea echipamentelor utilizate in cadrul laboratoarelor

inlocuirea programarilor telefonice cu programarile realizate online de catre utilizator

vizualizarea propriul dosar medical

acces rapid la istoricul analizelor

acces la istoricul consultatiilor

observatiile primite de catre medic cu privire la diagnostic si tratament

asistenta medicala

motor de cautare pentru: doctori, servicii si categorii de analize

Cerinte ale sistemului informatic din punct de vedere al cadrului medical:

vizualizarea orarului

acces la fisele de analiza ale pacientilor

posibilitatea programarii pacientilor pentru analize

monitorizarea indeaproape a starii de sanatate a pacientilor

evidenta istoricului programarilor

evidenta istoricului analizelor

motor de cautare pentru obtinerea informatiilor necesare

Pentru identificarea cerintelor sistemului informatic am realizat un studiu de fezabilitate in care am urmarit oportunitatea proiectarii acestui sistemului informatic, impactul estimat si costurile.

Conform [PM1] Rolul unui studiu de fezabilitate este de a asigura informatiile obiective necesare pentru cunoasterea posibilitatii de demarare a unui proiect, sau a posibilitatii continuarii acestuia.

Intrucat am identificat natura problemei de rezolvat si cerintele utilizatorului, masura preliminara a fezabilitatii a fost determinata odata cu faza de analiza a sistemului.

Orice studiile de fezabilitate trebuie sa aiba la baza o foarte buna documentatie. Aceasta documentatie va contine:

1. Definirea problemei( o scurta descriere a proiectului si explicarea a ceea ce isi propune sa realizeze)

Aplicatia isi propune a fi tool-ul necesar atat pacientilor cat si doctorilor in scopul inlesnirii comunicatiei dintre acestia.

2. Descrierea cerintelor sistemului

Aplicatia de fata este parte componenta a unui proiect ce isi propune urmatoarele :

Centralizarea datelor medicale.

Oferirea unor informații sigure doctorilor in situații de urgență.

Localizarea rapidă a unui cadru medical.

Supravegherea on-line a analizelor si a tratamentelor.

Transmiterea datelor în timp real către serviciul web MedTrack.

Păstrarea unei fișe medicale a pacientului cu date sincronizate cu serviciul web MedTrack.

Furnizarea de informații medicale in caz de urgență.

3. Descrierea solutiilor sistemului propus

Pentru realizarea aceste sistem informatic este nevoie de:

sistemul de gestiune al bazei de date MySQL, utilizat pentru stocarea, extragerea si prelucrarea datelor.

ide Eclipse pentru programarea operatiilor CRUD

Serverul Apache Tomcat

4. Explicatia critica a motivarii studiului intreprins

In momentul de fata, relatia intre doctor si pacient este deficitara, comunicarea realizandu-se foarte greu din cauza sistemului de “programare”. Prin utilizarea aplicatiei, pacientii vor beneficia de servicii mai bune, evitand programarile, deplasarea doar la anumite spitale. Totodata, doctorii vor castiga timp si isi vor putea mari numarul de pacienti.

3.2 Analiza sistemul informatic

"Sistemul informatic este un sistem care permite introducerea de date prin procedee manuale" [SI1](spre exemplu inserarea in baza de date, cu ajutorul interfetei), stocarea acestora intr-o baza de date, prelucrarea lor și extragerea informației (rezultatelor) sub diverse forme(grafice, charturi).

Componentele acestui sistem informatic sunt: calculator/telefon/tableta pentru a accesa aplicatia web, programul implementat folosind limbajul java, baza de date și utilizatorii.

Programele cu care am realizat acest sisteme informatic sunt: limbajul de programare java , Eclipse ide, serverul web Apache Tomcat, baza de date MySQL.

Metodologiile de proiectare a unui sistem informatic reprezinta o abordare structurata, care prin utilizarea unor proceduri, tehnici, instrumente si documentatii sustine si faciliteaza procesul de proiectare.[MPSI1]

Conform [MPS1] O metodologie de proiectare consta în mai multe faze, continând pasi care îndruma proiectantul în alegerea tehnicilor adecvate fiecarei etape a proiectului; de asemenea, il ajuta la planificarea, administrarea, controlul si evaluarea proiectelor de dezvoltare a bazelor de date.

În realizarea acestui unui sistem informatic, am urmat urmatoarele etape de realizare: analiza, proiectare, implementare. sunt unanim recunoscute de toti realizatorii de sisteme informatice. Ansamblul activitatilor de realizare a unui sistem informatic este prezent în aceste trei etape. Referitor la etapele de realizare a sistemelor informatice, conceptele utilizate în metodologiile existente sunt: etape/module/procese, cai, fluxuri de lucru, activitati, faze.

3.2.1 Identificarea entităților și a caracteristicilor acestora

Aplicatia poate fi utilizata atat de catre utilizatorii inregistrati cat si de cei care nu sunt intregistrati. Atfel, am folosit entitatea “users” pentru inregistrarea pacientilor, acestia completand un formular cu: nume, prenume, cnl, parola, telefon, email, tara, oras, adresa, data nasterii, sex. Pentru tara s-a folosit o alta entitate: “tari”. Pentru logarea in aplicatie am folosit cnp-ul ca fiind cod unic de inregistrare si parola aleasa de utilizator la inregistrare.

Aplicatia doreste sa fie accesibila pentru utilizatorii de tip: “admin”, “asistent”, “client”, “doctor” si “manager”. Un utilizator poate avea unul sau mai multe roluri, dar si un rol poate apartine unuia sau mai multor utilizatori(relatie many to many), astfel am creat tabelele: “users_roles” si “roles”. Pentru fiecare utilizator exista un profil, datele acestui profil se gasesc in tabela “users”, iar imaginile pentru profil in tabela “users_imagini”.

Sistemul are nevoie de prezentarea clinicilor disponibile in cele 2 orase disponibile: Bucuresti si Cluj. Astfel nevoia entitatii “centre” a aparut, aceasta entitate avand coloanele necesare descrierii fiecarui centru: tip centru (clinica sau laborator), nume, oras, adresa, telefon, email, program, descriere. De asemenea, pentru centru se poate adauga o imagine, pentru asta va fi nevoie de o alta tabela ”centre imagini”.

Fiecare clinica sau laborator poate avea anumite specialitati disponibile, pentru aceasta a fost folosita tabela “specialitati”, cu coloanele nume si descriere. Pentru fiecare specialitate este oferit un serviciu, tabela “servicii” avand coloanele: nume, descriere si pret estimativ.

Un utilizator(doctor) poate avea o specialitate sau mai multe, de asemenea, poate oferi unul sau mai multe servicii, pentru aceasta este nevoie de tabela”users_specialitate” si “users_servicii”.

O functionalitate a sistemului este reprezentata de crearea unei programari. O programare poate fi realizata de catre un utilizator(idClient), la un centru(IdCentru), la o specialitate(IdSpecialitate), la un doctor(IdDoctor), la o anumita data si ora. De asemenea, pentru o programare trebuie pastrat statusul: tratat, netratat. Fiecare doctor trebuie sa aiba un orar pentru a fi disponibil pacientilor care doresc sa faca programare la un centru, de asemenea doctorul isi poate vizualiza si modifica orarul. Tabela “orar” contine urmatoarele coloane: IdDoctor, IdCentru, ziuaSaptamaniiPrioritare, deLaOra, deLaMinutul, panaLaOra, panaLaMinutul si comentariu.

In urma realizarii unei programari se trimite o cerere, cu nume solicitantului, cnp, telefon, email, data programarii, localitate, mesaj, data cererii, status, comentariu, data tratarii. Pentru aceasta cerere am folosit tabela ”cereri_programari”.

Dupa o programare, pacientul poate fi trimis la analize. Pentru aceasta functionalitate s-a folosit tabela “analize” in care sunt descrise analizele pe care un pacient le poate face, acestea fiind organizate pe tipuri, cu ajutorul tabelei “categorii_analize”.

In urma unei analize se elibereaza setul de analize cu data cererii, centrul la care s-a realizat analiza , data recoltarii si statusul analizei. Pentru afisarea acestor informatii am introdus tabela “set_analize”. Pentru o privire mai amanuntita asupra rezultatului analizei, am utilizat tabela “set_analize_detalii”.

3.2.2 Realizarea diagramelor UML

In figurile de mai jos am realizat analiza datelor si a procedurilor din punct de vedere static, dinamic, functional utilizand un instrument CASE:

In figura1 este prezentata diagrama generala a cazurilor de utilizare in cadul aplicatiei.

figura1:diagrama generala a cazurilor de utilizare

Din figura1 reiese faptul ca aplicatia consta in inregistrarea atat a pacientului cat si a doctorului. Pacientul isi poate verifica profilul pentru a vizualiza progresul realizat. Totodata, acesta poate solicita o programare la doctor, iar daca aceasta intervine cu o alta programare a doctorului, primeste posibilitatea de a reprograma sau de a anula programarea. Toate aceste utilizari sunt realizabile prin aplicatie numai dupa ce se autentifica ca pacient.

Doctorul poate utiliza aplicatia doar dupa autentificarea cu reference no, aceasta diferentiindu-l de pacient. Doctorul poate prescrie retete unuia sau mai multi pacienti care sunt inregistrati la el, poate verifica profilul pacientilor sai sau ai altor doctori pentru a urmari evolutia pacientilor. De asemea, poate adauga consultatii, aproba programari, reprogramari daca consultatia intra in conflict cu o alta programare de a sa, sau o poate anula.

In figura2 este prezentata diagrama detaliata de utilizare a activitatii unui utilizator cu dreptul de client.

figura2: diagrama detaliata de utilizare a inregistrarii unui utilizator cu dreptul de client

Conform figurii 2, pentru o cerere de programare sau o vizualizare a profilului, istoricului analizelor vizitelor si programarilor este necesara autentificarea. Odata creat contul, mai este nevoie de activarea contului din partea administratorului.

CU01: Activitatea unui pacient cu drept de client

In figura3 este ilustrata diagrama detaliata de utilizare a programarii unui pacient

figura3: diagrama detaliata de utilizare a programarii unui pacient

In figura 3 este reprezentat procesul de programare al unui pacient. Un pacient, dupa autentificare, poate realiza o cerere de programare. Administratorul, primeste cererea, alege doctorul pentru respectivul pacient, doctorul accepta iar pacientul poate vedea ca programarea este valabila.

CU02: Programarea unui pacient

In figura4 este prezentata diagrama de utilizare a cererii unei analize de catre doctor

figura4: diagrama de utilizare a cererii unei analize de catre doctor

In figura 4 este prezentat procesul prin care doctorul poate realiza o trimitere la analize pentru a verifica starea de sanatate a pacientului. In urma probelor recoltate, administratorul adauga rezultatul final al analizei, pentru a fi interpretat de catre doctor.

CU03: Cererea unei analize de catre doctor

In figura5 este realizata diagrama de clase nedetaliată (fără atribute și metode)

figura5: diagrama de clase nedetaliata

In figura de mai sus se poate vizualiza diagrama de clase, asemanatoare schemei bazei de date.

In figura6 putem urmari diagrama de activitate pentru programarea unui pacient

figura6: diagrama de activitate pentru programarea unui pacient

In figura de mai sus sunt prezentati pasii urmati pentru a realiza o programare la doctor sunt detaliati mai sus in diagrama de activitate specifica pentru programare.

In figura7 urmarim diagrama de activitate pentru adaugarea unei analize de catre doctor

figura7: diagrama de activitate pentru adaugarea unei analize de catre doctor

In diagrama de mai sus este prezentat fluxul pe care il urmeaza un doctor pentru a cere o analiza pentru interpretarea rezultatului.

In figura8 avem prezenta diagrama de stare pentru statusul pacientului

figura8: diagrama de stare pentru statusul pacientului

Din figura de mai sus putem observa ca stausul pacientului poate fi:

-netratat- cand o programare nu a fost realizata

-neprezentat – cand pacientul este absent

-tratat- dupa programarea la doctor

-recoltat- atunci cand medicul cere probe pentru analiza

In figura 9 este realizata diagrama de stare pentru statusul contului unui doctor

figura9: diagrama de stare pentru statusul contintului unui doctor

Din figura9 se observa starile prin care poate trece un cont sunt:

-creat – s-au introdus datele necesare crearii contului

-activ – a fost activat de catre administrator

in asteptare- se asteapta activarea de la administrator

-inactiv – doctorul nu mai face parte din sistem

In figura10 este prezentata diagrama de clase detaliata

figura10: diagrama de clase detaliata

Din figura10 reiese faptul ca aplicatia permite mai multor tipuri de utilizatori sa utilizeze sistemul in functie de rolul pe care il detine. Deoarece fiecare utilizator are acces doar la anumite functionalitati ale sistemului, s-au utilizat tabelele: users, users_roles, roles.

Un user, in functie de rol, mai are posibilitatea de a-si vizualiza profilul si de a adauga centre medicale, de care apartin doctorii. Tot in functie de rol, acesta poate depunde testimoniale. Pentru aceste functionalitati s-au folosit urmatoarele tabele: centre, centre_imagini, testimoniale, users_imagini.

Intrucat un pacient se poate loga, acesta poate face o cerere de programare la un doctor cu specializare, dintr-un anumit centru medical, care poate oferi serviciul de consultare in functie de orarul si de programarile pe care le are. Pentru ca sistemul sa indeplineasca aceste functii s-au folosit tabelele: cereri_programari, programari, servicii, specialitati, orar, users_servicii, users_specialitati.

In urma unei programari, pacientul efectueaza o analiza sau mai multe in functie de recomandarea doctorului, pentru aceasta a fost nevoie de implementarea tabelelor: analize, categorii_analize, set_analize, set_analize_detaliate.

In figura11 este realizata diagrama de secventa in cazul realizarii unui programari.

figura11: diagrama de secventa in cazul realizarii unui programari

Din figura11 se observa ca un utilizator cu drepturi de doctor poate adauga o consultatie in urma inregistrarii. Acesta poate vizualiza programarile unui pacient, pentru a-i adauga o consultatie. In urma consultatiei, administratorul, adauga rezultatul analizelor pentru a fi interpretate de catre doctor.

In figura12 este prezentata diagrama de secventa pentru programare.

figura12: diagrama de secventa pentru programare

Din figura12 observam ca un utilizator cu drepturi de pacient, dupa logare, are posibilitatea de a face o cerere de programare. Aceasta programare este inregistrata de catre administrator pentru a fi valida.

3.3 Proiectarea aplicatiei

Aplicatia este realizata cu ajutorul sistemului de gestiune al bazelor de date MySql si a ide-ului Eclipse.

Proiectul are ca scop informarea utilizatorilor prin introducerea unei platforme on-line care sa ajute procesele de prelucrare a datelor si prezentare a rezultatelor. Datele prelucrate consta in analize, categorii analize, servicii, specialitati. Proiectul se identifica prin oferirea unei solutii software capabila de a identifica necesitatile utilizatorului pacient, doctor, manager, asistent. Prin solutia aleasa se urmareste a se analiza volume mari de date care sa furnizeze informatii specifice cerintelor unui utilizator.

3.3.1 Proiectare aplicatiei front-end

Lucrarea intentioneaza sa creeze un mediu ajutator urilizatorilor in care acestia sa regaseasca toate functiile necesare unei programari, consulatii, serviciu oferit.

Pentru vizitatorul de rand, proiectul reprezinta un site, in care se pot accesa mai multe pagini, pentru a obtine informatii cu privire la clinici, doctori, servicii, specialitati.

Pentru dezvoltarea acestei interfete grafice am utilizat html, css, bootstrap pentru style si java server pages(jsp). Intrucat am dorit ca interfata sa ramana aceeasi pentru fiecare utilizator cu rol diferit, am creat o structura comuna pentru toate paginile prin implementarea separata a structurarii unei interfete: menu, footer, layout, pageTitle si search.

Meniul reprezinta acea sectiune care contine in mod organizat toate paginile care pot fi accesate. Acesta se schimba in functie de rolul utilizatorului.

Footer-ul reprezinta portiunea separata de body, care se afla in josul paginii.

Layout-ul contine toate tag-urile de css si js-uri pentru functionalitatile de tip: carousel, datepicker, jquery, etc. De asemenea acest js este cel care defineste pozitia fiecarui element: header, body, footer.

Search-ul apare dupa meniu, acesta fiind o functie de cautare rapida.

PageTitle se ocupa de autentificarea afisarea functiei de log-in si de recunoastere a utilizatorului logat.

Pentru look&feel-ul aplicatiei s-a folosit bootstrap si font awesome, impartirea in pagina realizandu-se usor prin utilizarea claselor grid-row si grid col pentru div-uri.

Pentru incarcarea valorilor din baza de date in inputuri tabele, form-uri s-a folosit atributul value=${numevaloare} sau intre tag-uri se introduce ${numevaloare}.

Pentru iterarea obiectelor am folosit tag-ul <c:forEach>, utilizat pentru a sparge un string in token-uri si a itera pentru fiecare token.[TAG1] Acest tag l-am utilizat la afisarea tabelelor de: analize, servicii, specialitati, contacte, programari.

Un alt tag folosit este : <c:choose>. Acesta lucreaza ca un switch statement care iti permite sa selectezi intre mai multe alternative. Asa cum un switch statement are un case statement, asa si <c:choose> tag are tagul <c:when>. Exact ca un switch, acest tag are o clauza default care specifica actiunea default sau in mod similar tagul <c:otherwise>.[TAG2]

Tagul <c:set> este o versiune prietenoasa a actiunii setProperty. Acest tag este ajutator deoarece evalueaza expresia si foloseste rezultatul pentru a seta o valoare a unui JavaBean sau un obiect java.util.Map. [TAG3]

Pentru a simula statementul if, am folosit tag-ul <c:if> pentru a evalua o expresie si a afisa continutul doar daca expresia se evalueaza la adevarat.

Pentru functionalitati precum: crearea contului, realizarea unui programari, realizarea unei consultatii, adaugarea unui set de analize, adaugarea unui centru am utilizat tag-ul form. Tag-ul este folosit pentru realizarea unui form html pentru input-urile utilizatorului: <input>,< textarea>,< button>,< select>,< option>,< fieldset>,< label>.

Pentru afisarea continutului paginii s-a folosit tagul <sec:authorize access=”hasRole(‘CLIENT’)”>, pentru a determina daca continutul ar trebui sa fie evaluat sau nu. In Spring Security 3.0, poate fi folosit in doua feluri. Am utilizat abordarea care foloseste un web-service expression, specificat in atributul access al tagului. Expresia evaluata poate fi delegata la WebSecurityExpressionHandler definit in application context.

Tag-ul form are un atribut “action” care specifica unde sa trimita datele din form atunci cand acesta este submis: <form action=”URL”>. Url-ul determina unde sa trimita datele form-ului la submitere. [TAG4]

Am ales utilizarea jsp-urilor pentru fiecare pagina care apartine aplicatiei, deoarece le-am putut reutiliza pentru rolul utilizatorului. Java server pages este o tehnologie care ajuta developerii sa creeze pagini web dinamice bazate pe html, xml sau alte tipuri. Totodata acestea sunt compatibile pentru deploy-ul si rularea cu serverul Tomcat.

3.3.2 Proiectarea aplicatiei back-end

Funcționalitatea de vizualizarea a înregistrărilor din baza de date a fost realizată cu ajutorul framework-ului JPA al limbajului de programare Java. Această returnare a informațiilor grupate este posibilă prin implementarea unei metode care returnează din baza de date informațiile necesare prin apelarea unui interogări, asemănător celui care funcționează in MySql.

Conform [JPA1] Java Persistence API, denumit uneori și ca JPA este un framework al limbajului de programare Java, care se ocupă de gestionarea datelor relaționale în aplicații folosind Java Platform, Standard Edition și Java Platform, Enterprise Edition.

Java Persistence Query Language (JPQL) face interogări împotriva entităților stocate într-o bază de date relațională. Aceste interogări seamănă cu interogările SQL la sintaxa, dar funcționează împotriva obiectelor entități mai degrabă, decât direct cu tabele bazei de date. O entitate este o clasă Java a cărui stare este de obicei persistată într-o tabelă din baza de date relațională. Instanțele unei asemenea entități corespund cu rândurile individuale ale unei tabele. Entitățile au de fel relații cu alte entități, iar aceste relații sunt exprimate prin obiect/metadata relațional. Obiectul/metadata relațională poate fi specificat direct in fișierul clasă folosind adnotări, sau intr-un xml descriptor separat distribuit cu cererea.

Lucrul pe obiecte se realizează prin adnotarea de tabel către clasa și adnotarea de coloane pentru atributele clasei. Metoda DAO(Data Access Object) care realizează interogarea este implementată și apelată în repository, urmand ca service-ul sa apeleze repository-ul. [JPA2]Controllerul se ocupă de punerea pe model a informațiilor extrase. Partea de vizualizare a informațiilor aduse sub formă de tabel se află într-un view de tip jsp, fiecare jsp al aplicației include un alt fișier include.jsp.

Aplicația a fost realizată în conformitate cu modelul arhitectural Model-view-controller, utilizat în ingineria software. A fost ales acest model deoarece izolează logica de business față de considerentele interfeței cu utilizatorul, rezultând o aplicație unde aspectul vizual sau/și nivelele inferioare ale regulilor de business sunt mai ușor de modificat, fără a afecta alte nivele. Partea de model a arhitecturii reprezintă acea parte a controller-ului care manipulează operațiunile logice și de utilizare de informației(trimisă dinainte de către rangul său superior) pentru a rezulta o formă ușor de înteles. Partea de view corespunde cu reprezentarea grafică, sau mai bine zis, exprimarea ultimei forme a datelor: interfața grafică ce interacționează cu utilizatorul final.Rolul său este de a evidenția informația obținută până ce ea ajunge la controller. Controllerul este elementul cu care putem controla accesul la aplicație. Pot fi fișiere, script-uri sau programe, orice tip de informație permisă de interfață. În acest fel am putut diversifica conținutul de o formă dinamică și statică, în același timp. În concluzie s-au folosit cele trei elemente: model, view, controller pentru a face posibilă manipularea datelor.

Functionalitatea aplicatiei a fost impartita pe pachete : beans, model, repository, service, util, editors, security, taglibs, validators si web.

In pachetul beans am realizat clasela Menu care contine o lista de obiecte MenuItem.

Pentru fiecare obiect din baza de date am realizat o clasa. Fiecare clasa contine adnotari: @Entity, @Table, @Id, @GeneratedValue, @Column, @ManyToOne, @JoinColumn.

Adnotarile Hibernate reprezinta o cale puternica de a asigura metadatele pentru obiect si pentru mapare.

Adnotarea @Entity indica ca acest JavaBean este o entitate persistenta.

Hibernate detecteaza ca adnotarea @Id este pe un camp si presupune ca ar trebui sa accese proprietatile acelui obiect direct prin campuri la runtime.

Adnotarea @Table iti permite sa specifici detalii ale tabelei care va fi folosita sa persisti entitatea in baza de date, de exemplu: @Table(name = "analize").

Adnotarea @Column este folosita pentru a specifica detaliile unei coloane pentru care un camp va fi mapat.

Adnotarile @ManyToOne, @OneToMany, @ManyToMany sunt utilizate pentru a evidentia relatiile dintre clase, mod similar cu cel al relatiilor intre tabele.

In pachetul repository se regasesc interfetele si implementarea acestora. Pentru fiecare obiect exista o serie de metode care sunt folosite pentru: afisare, salvare, stergere, modificare, filtrare, cautare.

Se foloseste adnotarea @Repository deoarece este un marker pentru orice clasa care undeplineste rolul sau stereotipul(de asemenea cunoscut ca Data Access Object) unui repository. Asemnanatoare aceste adnotari este si @Component si @Service, toate inseamna ca respectiva clasa este un Spring bean. Adnotarea @Repository este acel data access layer al aplicatiei care este folosit pentru a prelua date din baza de date, toate operatiilor database related sunt facute de catre repository.

O instanta EntityManager este asociata cu persistence context. Un persistence context este un set de instante de entitati in care pentru fiecare entitate peristenta identificata este o entitate de instanta unica. In cadrul persistence context, instantele de entitate si lifecycle-ul lor sunt administrate. API-ul EntityManager este folosit pentru a crea si sterge instantele de entitate persistente, pentru a gasi entitati dupa cheile primare si pentru query-uri asupra entitatilor.

Pentru operatiile de save, delete, update sunt folosite metode ale EntityManagerului: persist, merge, remove.

Pentru realizarea query-urilor se foloseste interfata javax.persistence.Query, si metoda createQuery a interfetei javax.persistence.EntityManager, spre exemplu:

Query query = em.createQuery("FROM Analiza a ORDER BY a.categorieAnaliza.nume ASC, a.nume ASC");

Pachetul de service contine interfete si implementari, implementarilor folosind repository-urile create, ajutandu-se de adnotarea @Autowired pentru injectare.

Adnotarea @Autowired ii spune Spring-ului unde anume se intampla o injectare, aceasta fiind usor de folosit deoarece nu mai este nevoie de configurarea unui xml. Ideea de autowiring consta in injectarea campurilor si a dependintelor fara vreo alta configurare.

Pachetul util contine tipuri enum pentru : centru, statusul programarii cererii, statusul contactului, statusul analizelor, zilele saptamanii.

In pachetul editors se gasesc clase care extind PropertyEditorsSupport pentru a face bind si convert asupra datelor.

In pachetul security are loc logica pentru implementarea autentificarii unui utilizator, sunt tratate cazurile de succes si esuare.

Pentru paginarea tabelelor, am utilizat clasa Paginator, pentru validarea datelor am implementat clase in pachetul validator. Fiecare clasa din acest pachet, are o verificare pentru fiecare input folosit la form-uri. Spre exemplu: numele utilizatorului nu poate sa fie mai mic de 3 caractere, minutul introdus nu poate fi mai mare de 59, cnp-ul nu poate fi mai mic sau mai mare decat 13 caractere,etc.

In clasele controller, se injecteaza repository-urile, service-urile si validatorii cu ajutorul adnotarii @Autowired.

Fiecare clasa se adnoteaza cu @Controller iar fiecare metoda cu @RequestMapping.

Adnotarea @Controller se foloseste in framework-ul Sprin MVC(componenta a Springului utilziata pentru a implementa aplicatii Web). Adnotarea indica ca o anumita clasa serverste rolul de controller si este in principiu folosita ca un layer de prezentare. Dispatcher-ul scaneaza aceste clase adnotate pentru maparea metodelor si detecteaza si adnotarile @RequestMapping.

Adnotarea @RequestMapping este folosita pentru maparea web request-urilor pentru handlere specifice ale claselor sau ale metodelor. Am folosit adnotarea la metode pentru a furniza pattern url-ul pentru handler-ul pentur care se va folosi metoda. Pe langa definirea url-ului se mai poate defini si tipul de request: post pentru creare, modificare si stergere; iar get pentru citire.

3.3.3 Proiectarea bazei de date

Proiectarea bazei de date presupune proiectarea structurii conceptuale, logice si fizice. în procesul de proiectare pot aparea situatii cand sunt necesare reveniri la activitatile anterioare, fiind privit ca un proces neliniar.

Proiectarea structurii conceptuale se face pornind de la modelul logic proiectat. Cuprinde activitatile, detalierea colectiilor de date, revizuirea legaturilor dintre colectii, rafinarea modelului conceptual si transpunerea modelului conceptual.

Pasii de definire a activitatilor pana la rafinarea modelului se face prin tehnologia de proiectare asistata UML (Unified Modeling Language), produsul final fiind schema fizica a datelor si transpunerea în limbaj de programare.

Transpunerea intr-un limbaj de programare se face în termenii unui anumit SGBD și

descrierea structurii în limbajul corespunzător acestui SGBD.

Structura logică a bazei de date reprezintă forma sub care apare structura conceptuală a bazei de date pentru un utilizator oarecare. Programele de aplicație operează asupra elementelor structurii conceptuale prin intermediul structurii logice având acces doar la acele elemente ale structurii conceptuale care sunt incluse în structura logică.

Schema fizica reprezinta transpunerea schemei conceptuale.

Structura conceptuala a bazei de date imbraca diferite forme de reprezeintare: liniara,

arborescenta, retea, relational. Prin proiectare se determina un model semantic, care sa reflecte cat mai fidel lumea reala. Baza de date proiectata pentru aplicatia de business intelligece este de tipul relational.

Proiectarea prin tehnica normalizării

Rafinarea modelului presupune parcurgerea etapelor de normalizare care presupune

eliminarea unor anomalii de actulizare din structura. Normalizarea este utilizata în activitatea de proiectare a bazelor de date relationare si utilizeaza ca si metoda tehnica de descompunere (top-down) a unei tabele în doua sau mai multe tabele pastrand atributele de legatura.

a) Forma normala 1, FN1:

O tabela este în FN1 daca toate atributele ei contin valori elementeare, fiecare tuplu nu

trebuie sa aiba date le nivel de grup sau repetitiv.

b) Forma normala 2, FN2:

O tabelă este în FN2 dacă și numai dacă este în FN1 și fiecare atribut noncheie al tabelei este dependent funcțional complet de cheie.

Un atribut B al unei tabele depinde funcțional de atributul A al aceleiași tabele dacă

fiecărei valori ale lui A îi corespunde o singură valoare a lui B care îi este asociată în tabelă. Un atribut B este dependent funcțional complet de un ansamblu de atribute A în cadrul aceleiași tabele, dacă B este dependent funcțional de întreg ansamblul A (nu numai de un atribut din ansamblu).

O tabelă în FN2 prezintă încă o serie de anomalii de actualizare, datorită eventualelor dependențe tranzitive. Eliminarea dependențelor incomplete se face prin descompunerea tabelei inițiale în două tabele, ambele conținând atributul intermediar (B).

c) Forma normala 3, FN3

O tabelă este în FN3 dacă și numai dacă este în FN2 și fiecare atribut noncheie depinde în mod netranzitiv de cheia tabelei.

Într-o tabelă T, fie A,B,C trei atribute cu A cheie. Dacă B depinde de A (A B) și C depinde de B (B C) atunci C depinde de A în mod tranzitiv.

Eliminarea dependențelor tranzitive se face prin descompunerea tabelei inițiale în două tabele, ambele conținând atributul intermediar (B).

O tabelă în FN3 prezintă încă o serie de anomalii de actualizare, datorate eventualelor

dependențe multivaloare.

Structura logica a tabelelor BD

Codificarea externă a datelor – prin operația de codificare se înțelege generarea unor

grupuri de simboluri și atribuirea lor elementelor unei înregistrări.

Capitolul 4. Prezentarea aplicatiei

Pagina de autentificare este obligatorie pentru orice utilizator care detine rol. Daca utilizatorul nu are cont, acesta isi poate crea. Contul va fi ulterior aprobat de catre administrator iar utilizatorul va avea posibilitatea de a se loga in aplicatie.

Functia de programare este disponibila oricarui utilizator, indiferent de rol. Acesta isi poate alege data si orasul si mesajul, impreuna cu datele personale de contact.

Administratorul vizualizeaza cererea, in urma caruia realizeaza o programare catre doctor.

Doctorul vede programarea si daca doreste trimite pacientul la efectuarea unei analize.

In urma unei analize, administratorul adauga rezultatul analizelor pentru a fi interpretat de catre doctor.

Concluzii

Analizand comportamentul pacientului modern, aflat mereu in miscare, a devenit esentiala nevoia de a oferi suport oriunde si oricand. Astfel, s-a ajuns la crearea unei infrastructuri moderne care ii faciliteaza atat pacientului cat si doctorului accesul la informatii si servicii in timp util. Clinica virtuala aduce un set de beneficii remarcabile pentru pacienti, acestia avand acces rapid la istoricul medical al analizelor si al programarilor. De asemenea doctorii pot vizualiza fisele de analiza ale pacientilor, dar si orarul programariilor.

Solutia propusa va stabili un nou standard in relatia pacient-retea si doctor-retea.

Aplicatia ofera acces la lista medicilor si a clinicilor, un pacient isi poate face programare direct din aplicatie la orice clinica medicala sau la orice laborator.

Avand o interfata intuitiva, cu un design minimalist, gandit pentru a oferi utilizatorului o experienta cat mai placuta, pacientii vor avea acces complet la propriul dosar medical- incluzand istoricul consultatiilor, evolutia si rezultatele analizelor de laborator, precum si observatiile medicului cu privire la diagnostic si tratament. Totodata, aplicatia ofera utilizatorilor continut cu privire la echipa medicala, echipamente utilizate si testimoniale.

Portalul este contruit folosind tehnologie recenta, pentru a fi accesibil publicului si pentru a evita actualizari costisitoare si semnificative deoarece gazduieste viitoare cresteri si schimbari atat in tehnologie cat si in plan medical international.

Clinica medicala poate fi utilizata pentru a elimina nevoia de a naviga pe mai multe site-uri web si aplicatii pentru a culege informatii cu privire la recomandari, doctori, clinici, laboratoare. Rezultatul analizelor poate fi vizionat online, nu mai este necesara programarea efectiva la medic. Istoricul analizelor este valabil atat pentru pacient cat si pentru doctor, astfel, acesta isi poate tine un istoric al sanatatii. Pogramarile au devenit mai usor de realizat, operatorul telefonic fiind inlocuit de catre sistem, utilizatorii putand crea o programare printr-un singur click. Orarul doctorilor, monitorizarea pacientilor a devenit mai eficienta intrucat se tine evidenta clara atat a programarilor cat si a analizelor fiecarui pacient.

Asadar, platforma completeaza un aspect principal al medicinei.

Avand o gama larga de informatii concrete, asistenta medicala specializata, servicii valabile 24 de ore, o alta caracteristica este reprezentata de realizarea unui continut accesibil printr-un motor de cautare pentru doctori, useri, servicii si categorii de analize.

De asemenea este evidențiată raționalizarea intefeței utilizatorului prin intermediul prezentarii prietenoase, asigurarea accesului personalizat pentru utilizatori, furnizarea unui cadru robust și de incredere, furnizarea unui mecanism de înregistrare pentru acces, sprijinirea unei serii de mecanisme de colaborare.

Primul capitol realizează analiza domeniului medical în Romania pentru stabilirea necesităților de integrat în aplicația informatică.

Al doilea capitol are rolul de a defini mijloacele informatice necesare pentru definirea structurii aplicației.

În acest sens sunt identificate si analizate modelele de date care vor fi folosite în prezentarea informațiilor medicale.

Capitolul trei abordează proiectarea efectivă a aplicației informatice pornind de la realizarea interfeței prietenoase cu ajutorul instrumentelor de html, css, jquery, javascript, , pană la proiectarea sistemelor informatice ce utilizează baza de date(MySql) și instrumentele necesare dezvoltării aplicației(Eclipse).

Lucrare de dizertatie abordează relatia pacient-sistem si doctor-sistem in Romania, în urma analizei evoluției acestui domeniu pe scala timpului si a starii actuale.

Bibliografie

[PM1] "Identificarea si controlul riscurilor profesionale in utilizarea videoterminalelor"

Autori: Mihaela Seracin, Viorica Petreanu, Ileana Grigoriu

http://www.protectiamuncii.ro/en/good_practice/riscurile_profesionale_videoterminale.shtml

[MYSQL1] "MySQL"

Autor: Wikipedia

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

[UML1] "Unified Modeling Language"

Autor: Wikipedia

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

[SI1] "Sistem informatic"

Autor: Wikipedia

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

[MPSI1]"BAZELE ANALIZEI DE SISTEM"

Autor:Prof. Univ. Dr. Paun Mihai

http://www.asecib.ase.ro/Paun/cap6-ads-intern.PDF

[TAG1]"JSTL CORE"

Autor:

http://www.tutorialspoint.com/jsp/jstl_core_foreach_tag.htm

[TAG2]"JSTL CORE"

Autor:

http://www.tutorialspoint.com/jsp/jstl_core_choose_tag.htm

[TAG3]"JSTL CORE"

Autor:

http://www.tutorialspoint.com/jsp/jstl_core_set_tag.htm

[TAG4]"HTML form Action Attribute"

Autor:

http://www.w3schools.com/tags/att_form_action.asp

[TAG4]"The Java EE 6 Tutorial"

Autor: Oracle

http://docs.oracle.com/javaee/6/tutorial/doc/bnbpz.html

[TAG4]"Java Persistence/What is JPA?"

Autor: Wikipedia

http://en.wikibooks.org/wiki/Java_Persistence/What_is_JPA%3F

Similar Posts