Caracteristici, Particularitati, Implementari Si Tendinte Actuale ale Sistemelor Distribuite Eterogene
Cuprins
Introducere
1. Prezentarea domeniului din care face parte sistemul
2. Sisteme distribuite
2.1. Sisteme distribuite eterogene
2.2. Sisteme de baze de date distribuite și eterogene
3. Specificațiile sistemului
4. Arhitectura sistemului
4.1. Arhitectura modulului client
4.2. Arhitectura modulului server
5. Tehnologii folosite
5.1. Java
5.2. Php, Javacript, Html, Css
5.3. MySql și Microsoft Sql
5.3.1. MySQL
5.3.2. Microsoft SQL
6. Proiectarea aplicației
6.1. Interacțiunea Java – MySQL și Java – Microsoft SQL
6.2. Link MySQL – Microsoft SQL
6.3. Structura bazei de date de tip MySql
6.4. Structura bazei de date de tip Microsoft Sql
6.5. Manual de utilizare a aplicației java
6.6. Manual de utilizare a aplicației web
7. Concluzii și planuri de viitor
Bibliografie
Introducere
Încă de la începutul anilor 1960 a apărut ideea de stocare a informațiilor medicale în format electronic. Documentele/Fișele ce conțineau date medicale despre pacienți deveneau din ce în ce mai greu de organizat.
Primul astfel de sistem a apărut într-un spital din Massachusetts, SUA. Sistemul stoca atât informații medicale despre pacienți cât și informații de asigurare și facturare în urma procedurilor efectuate.
La început înregistrările despre pacienți conțineau doar câteva note cu privire la starea lor de sănătate. Odata cu trecerea timpului și dezvoltarea de sisteme din ce în ce mai complexe, raportul despre pacienți a devenit mult mai detaliat, conținând date din întreaga lor viața. Ulterior s-a încercat realizarea un sistem comun de stocare a informațiilor medicale, care să pună la dispoziția tuturor spitalelor/clinicilor date despre pacienții consultați.
Astăzi, în majoritatea țărilor europene, se investesc mari sume de bani pentru crearea și modernizarea unor sisteme de înregistrare electronica a pacienților. Acest lucru avantajează foarte mult atât medicii în practical lor medicală, cât și pacienții.
Un sistem de monitorizare și informare a pacienților poate aduce foarte multe beneficii atât medicilor prin urmărirea istoricului medical al pacienților (diagnostice, analize, precum și alte informații medicale) pe baza căruia munca lor ar deveni mult mai exactă și ușoară, cât și pacienților prin informarea online în ceea ce privește starea lor de sănătate, rezultate la analize etc.
Un astfel de sistem ar putea impiedica producerea greșelilor umane datorate necunoașterii istoricului medical al pacientului respectiv și ar putea conduce la dezvoltarea unei baze de date naționale ce conține informațiile medicale ale tuturor persoanelor ce au trecut cel puțin o dată pe la o clinică medicală.
Lucrarea este structurată în 7 capitole care prezintă partea teoretică privind sistemele distribuite eterogene și modul de realizare și funcționare a părții practice (tehnologii folosite, modul de proiectare a aplicațiilor, manual de utilizare).
• Capitolul 1: Prezentarea domeniului din care face parte aplicația
• Capitolul 2: Sisteme distribuite
• Capitolul 3: Specificațiile sistemului
• Capitolul 4: Arhitectura sistemului
• Capitolul 5: Tehnologii folosite
• Capitolul 6: Proiectarea aplicației
• Capitolul 7: Concluzii și planuri de viitor
• Prezentarea domeniului din care face parte sistemul
Cele două aplicații create (aplicația java și aplicația web) fac parte din domeniul de monitorizare și digitalizare a stării de sănătate a locuitorilor atât din România cât si din alte țări.
În aproape toate statele Uniunii Europene, starea de sănătate a locuitorilor este monitorizată și înregistrată, pe toată durata vieții, atât la nivel de stat cât și la nivel particular. Există astfel un sistem comun ce înregistrează toate datele cu vedere la starea de sănătate a pacienților, indiferent de locul în care a fost realizată consultația medicală.
Astfel, printr-un simplu click va putea fi vizualizat întregul nostru istoric medical.
În ultima vreme, în România, s-a încercat implementarea unui sistem de înregistrare a tuturor observațiilor medicale în cadrul medicinei de familie.
În urma testelor ce s-au desfășurat pe o perioada de o lună au fost înregistrate 300 000 de dosare. Înscrierea dosarului în sistem se face cu ocazia unui prim consult. Dosarul electronic de sănătate, așa cum a fost numit în cadrul proiectului, va conține toate informațiile medicale care până în momentul de fața existau în fișele/foile de observație și consultație ce erau completate manual de către doctori sau asistenți.
Rezultatele bune obținute au făcut ca acest dosar electronic să devină obligatoriu în cadrul medicinei de familie începând cu data de 1 iunie anul acesta. Datele înregistrate vor putea fi accesate atât de către pacient cât și de către medici, cu acceptul acestuia. În caz de urgența dosarul va putea fi accesat de către medic și fără acceptul pacientului, anumite informații din istoricul medical fiind considerate vitale.
Dosarul electronic al pacientului va fi format din date precum:
• Istoric medical al pacientului – conține rezultatele consultațiilor (diagnostice, tratamente, alergii, intervenții medicale etc).
• Documente ce au fost eliberate pacientului
• Antecedente declarate – conține informații ce au fost declarate de către pacient, precum alergiile, vaccinurile făcute pe perioada vieții etc.
O problemă a acestui sistem “Dosar electronic” o reprezintă căderea rețelei ce ar putea face ca datele să nu fie înregistrate. În cadrul dosarului electronic informațiile vor fi stocate doar la nivel global, și nu la nivel local în fiecare cabinet.
Sistemul a fost construit folosit ca model articolul “Un sistem distribuit cu baze de date pentru monitorizarea glaucomului” scris de M. Mocanu, Dorobanțu, C. Mocanu, D. Burdescu în cadrul Facultații de Automatică și Calculatoare, Universitatea Craiova. Acest proiect avea ca scop urmărirea și înregistrarea pacienților bolnavi de glaucom, în cadrul cabinetelor de oftalmologie.
Acest model a fost generalizat pentru crearea unui sistem de înregistrare a pacienților și consultațiilor în cadrul cabinetelor medicale generale. Totodata a fost creat un sistem de programări în cadrul aplicației locale precum și posibilitatea de vizualizare web a istoricului medical de către pacienți.
Sistemul construit de către mine este compus din două aplicații:
• aplicația Java – ce va fi folosită în fiecare cabinet medical privat pentru înregistrarea informațiilor cu privire la starea de sănătate a pacienților, precum și pentru înregistrarea programărilor. Accesul la aplicație se va face pe baza unui nume de utilizator și a unei parole comunicate de către administratorul sistemului.
Pentru salvarea datelor aplicația va folosi o bază de date locală. Informațiile (consultațiile) vor fi transferate din baza de date locală în baza de date centrală de către doctor în momentul în care acesta consideră că acestea au fost finalizate. Prin intermediul acestei aplicații doctorii vor putea accesa informațiile cu privire la istoricul medical al unui pacient din baza de date centrală.
• aplicația Web – ce va fi folosită de către pacienți pentru vizualizarea tuturor consultațiilor pe care aceștia le-au făcut în cadrul cabinetelor ce aparțin sistemului. Accesul la aplicația Web se face pe baza unui nume de utilizator și a unei parole.
• Sisteme distribuite
O constantă a evoluției științei și tehnologiei sistemelor de calcul este cererea continuă de performanțe tot mai mari, exprimate în primul rând prin viteză de calcul, deci timp de execuție mai mic, dar și prin numărul de aplicații terminate în unitatea de timp.
Un rezultat al acestor cereri îl reprezintă sistemele distribuite eterogene. Sistemele distribuite eterogene pot oferi o sumedenie de beneficii utilizatorilor, prin caracteristicile și particularitățile lor.
Din punct de vedere al investiției în echipamente, în cazul sistemelor distribuite eterogene, costurile se pot reduce considerabil, deoarecere un sistem distribuit poate partaja atât unele resurse hardware scumpe (imprimante, servere cu baze de date, scanere, faxuri etc.) cât și produse software cu licențe scumpe.
Datorită acestor beneficii sistemele distribuite eterogene au devenit foarte folosite în cazul organizațiilor (rețea Intranet cu acces distribuit la resurse).
În anumite cazuri utilizatorii sistemelor distribuite eterogene sunt mai puțin preocupați de costurile resurselor folosite, fiind interesați mai mult de funcționarea modalității de partajare a resurselor de cate trebuie să se folosească în aplicațiile lor. Partajarea resurselor se face incepând de la persoane foarte apropiate (colegi de serviciu ce folosesc aceeași imprimantă) și până la personae care nu se cunosc între ei (utilizatorii unor motoare de căutare pe Internet).
Printr-un sistem distribuit de calcul sau sistem informatic distribuit se înțelege o mulțime de aplicații software implementate într-o rețea de noduri (calculatoare, procesesoare, stații de lucru, clustere) care au acces fiecare la o memorie proprie (dar pot avea acces și la anumite memorii comune partajate).
Altfel spus, un sistem distribuit de calcul reprezintă o colectie de calculatoare autonome (pot lucra independent), legate la o retea, ce apare pentru toți utilizatorii sistemului ca un singur sistem de calcul. Astfel de sisteme sunt concepute cu scopul partajării unor resurse sau pentru rezolvarea concurentă a unor aplicații paralele sau paralelizabile.
Sistemele distribuite de calcul se impart în două clase:
• Sisteme informatice distribuite omogene (bazate pe multiplicarea unor resurse de același tip)
• Sisteme informatice distribuite eterogene (resurse de tip diferit). De exemplu, Internet, unele clustere etc.
În practică se întâlnesc cel mai frecvent sistemele distribuite eterogene:
• hardware local eterogen: echipamente electrice și electronice diferite
• software local eterogen: aplicații de rețea și procesele software ce deservesc sistemul distribuit sunt implementate în diverse limbaje de programare, sistemele de operare din nodurile rețelei pot fi diferite etc.
• componente conceptuale eterogene: topologia rețelelor care intră în alcătuirea sistemului distribuit, modul de comunicare, sincronizare și coordonare între procese etc.
Caracteristici de bază ale sistemelor distribuite:
• concurența: se poate lucra simultan pe diferite computere din rețea, eventual partajandu-se aceleași resurse.
• lipsa unui ceas global: există limite în ceea ce privește capacitatea computerelor din rețea de a-și sincroniza ceasurile interne.
• Rezistența la erori: la apariția unei erori/defect în rețea se vor izola anumite computere. Astfel rețeaua va funcționa în continuare, programele ce rulau pe nodul deconectat nedetectând că a fost întreruptă conexiunea.
Avantaje:
• Performanță ridicată. Foarte adesea o colecție de procesoare poate oferi performanțe superioare unui calculator centralizat. Existența mai multor procesoare într-un sistem distribuit face posibilă reducerea timpului de realizare a unei sarcini, prin împărțirea acesteia în subsarcini între diferite procesoare, colectarea rezultatelor parțiale și determinarea rezultatului final (paralelizare a calculului).
• Distribuție. Multe aplicații implică prin natura lor mașini de lucru separate (sistemul bancar, sistemul comercial).
• Încredere/Fiabilitate mărită în funcționare. În cazul în care o mașină de lucru/calculator suferă un accident, sistemul poate supraviețui (în cazul în care sistemul este format din mai multe calculatoare). La proiectarea unui sistem distribuit trebuie să ținem cont de siguranța în funcționare a acestuia, astfel încât căderea unui nod să nu influențeze sistemul, alte noduri preluând sarcinile nodului căzut.
• Creștere incrementală. Dacă se dorește creșterea puterii de procesare, numărul mașinilor de lucru poate crește fără a crea probleme suplimentare funcționarii sistemului în ansamblul său.
• Schimbul de date/resurse. Datele comune srea rezultatului final (paralelizare a calculului).
• Distribuție. Multe aplicații implică prin natura lor mașini de lucru separate (sistemul bancar, sistemul comercial).
• Încredere/Fiabilitate mărită în funcționare. În cazul în care o mașină de lucru/calculator suferă un accident, sistemul poate supraviețui (în cazul în care sistemul este format din mai multe calculatoare). La proiectarea unui sistem distribuit trebuie să ținem cont de siguranța în funcționare a acestuia, astfel încât căderea unui nod să nu influențeze sistemul, alte noduri preluând sarcinile nodului căzut.
• Creștere incrementală. Dacă se dorește creșterea puterii de procesare, numărul mașinilor de lucru poate crește fără a crea probleme suplimentare funcționarii sistemului în ansamblul său.
• Schimbul de date/resurse. Datele comune sunt esențiale pentru foarte multe aplicații (bancare, comerciale, de rezervare). Sistemele distribuite oferă facilități de comunicare la distanță, de exemplu aplicația Internet, prin intermediul căreia se poate realiza comunicarea și corespondența electronică între indivizi aflați în locuri diferite.
• Partajarea resurselor scumpe. O organizație preferă să cumpere mai multe calculatoare ieftine și de puteri rezonabile, pe care să le interconecteze între ele, în loc să cumpere unul performant și scump. Costul măririi unei astfel de rețele este mult mai mic decât în cazul resurselor conectate la un singur calculator foarte performant.
• Comunicarea. Facilitează comunicarea om la om.
Dezavantaje:
• Dificultăți în dezvoltarea de software-uri distribuite. Algoritmii utilizați în sistemele distribuite, pe lângă faptul că trebuie să fie corecți, flexibili și eficienți, trebuie să țină cont de resursele care pot fi puse să lucreze în paralel și de modul de comunicare între acestea.
• Probleme de rețea. Foarte multe probleme sunt create de infrastructura rețelei, ce trebuie să se ocupe cu pierderea mesajelor, suprascrierea etc.
• Probleme de securitate. Punerea în comun a datelor generează probleme de securitate a datelor.
• Sisteme distribuite eterogene
Eterogenitatea reprezintă o caracteristică a sistemelor distribuite ce se manifestă la mai multe niveluri:
• La nivel de hardware – De exemplu, tipurile de date pot avea reprezentări diferite, în funcție de tipul de procesor utilizat.
• La nivel de software – De exemplu, modul în care se face schimbul de mesaje în Windows este diferit de modul în care se face schimbul de mesaje în Linux.
Sistemele distribuite eterogene conțin mai multe tipuri de hardware și software ce lucrează împreună, cooperând pentru a rezolva diferite probleme.
Într-un sistem pot exista multe reprezentări ale datelor. Acest lucru poate include reprezentări diferite pentru numere întregi, fluxuri de octet, numere cu virgulă mobilă și seturi de caractere. Cele mai multe dintre date pot fi mutate de la un sistem la altul, fără a se pierde din semnificația lor.
O aplicație compilată pentru un set de instrucțiuni nu poate rula foarte ușor pe un calculator cu un alt set de instrucțiuni, excepție făcând cazul în care este prevăzut un interpretator al setului de instrucțiuni. Evoluțiile recente în web si Java vor putea furniza un limbaj universal interpretat pe majoritatea calculatoarelor.
• Sisteme de baze de date distribuite și eterogene
Sistemele de baze de date distribuite eterogene (numite și sisteme „multidatabase” -MDBS) integrează în mod logic multiple sisteme baze de date asigurând acces uniform și transparent la datele stocate în aceste baze de date. Sistemele “multidatabase” răspund la nevoile organizațiilor de a opera intre ele bazele de date deja aflate în exploatare, ce suportă propriile aplicații și proprii utilizatori. Un MDBS permite fiecărui sistem local de bază de date să continue să opereze într-o manieră independentă. Un MDBS conservă autonomia sistemelor locale de baze de date, ceea ce înseamnă că design-ul unui MDBS nu are nevoie de vreo schimbare în bazele de date și tranzacțiile existente sau în sistemele de gestionare al bazelor de date locale.
Consistența datelor reprezintă prima problemă în toate sistemele în care datele sunt dispersate pe mai multe baze de date și în care sunt suportate ambele activități de actualizare și extragere a datelor. Întrucât consistența presupune controlul asupra datelor din bazele de date multiple, autonomia presupune lipsa oricărui control. În bazele de date distribuite tradiționale consistența este asigurată de serializabilitate alături de “atomicitatea de eșec”, cu costul unei pierderi de autonomie. În contextul sistemelor “multidatabase” s-a observat că autonomia nodurilor individuale sau a sistemelor de baze de date trebuie să fie încălcată pentru a menține proprietățile bazelor de date și tranzacțiilor tradiționale.
Un MDBS este contruit pe baza unor sisteme de baze de date existente. Aceste sisteme de baze de date, ce se numesc noduri MDBS, sunt sisteme baze de date tradiționale ce asigură serializabilitatea și “atomicitatea de eșec”.
• Specificațiile sistemului
Majoritatea clinicilor sau cabinetelor medicale din ziua de astăzi au în dotare cel puțin un calculator destul de puternic pe care să poate rula o aplicație cu acces la o bază de date locală, pe care să fie stocate înregistrările pacienților.
Cel mai frecvent, pacienții au un anumit cabinet sau un anumit doctor, ce cunoaște istoricul lor medical, unde preferă să se consulte.
Uneori există însă și posibilitatea ca aceștia să fie nevoiți să-și schimbe doctorul. Necunoaștere istoricului medical al pacientului poate duce la o serie de complicații ce pot deveni critice în cazul prescrierii unui tratament pentru o anumită boală. Pentru orice tratament și diagnostic pus este absolut necesar să se știe istoricul medical al pacientului (alergii, diagnostice mai vechi etc.).
Chiar dacă există posibilitatea ca investigațiile unui pacient să fie disponibile la nivel local de cabinet sau clinică, în acest moment nu exista posibilitatea ca ele sa fie accesate din exterior, de către alte cabinet medicale.
Tocmai din acest motiv, în ziua de astăzi, tratamentul prescris de un doctor este dependent de fișele medicale anterioare pe care pacientul trebuie să le pastreze.
Toate aceste probleme m-au condus la concluzia că proiectarea și implementarea unui sistem de inregistrare electronică a informațiilor medicale este absolut necesar în monitorizarea bolilor.
Acest sistem va permite doctorilor să observe, să modifice și să introducă datele și înregistrarile medicale ale pacienților într-o maniera sigura, flexibilă și eficientă. Toate aceste informații vor fi transferate într-o bază de date centrală pentru a putea fi puse la dispoziția fiecărui cabinet ce face parte din sistem.
Totodată existența unei aplicații Web va permite pacienților să poate vizualiza online rezultatele analizelor și consultațiilor, precum și intregul istoric medical.
• Arhitectura sistemului
Caracterizarea unui sistem de gestiune a bazelor de date distribuite se face încadrându-l după cele trei axe reprezentând caracteristicile de implementare ale acestuia:
• Distribuție
• Autonomie
• Eterogenitate
În funcție de caracteristicile sistemului, de poziționarea sa în spațiul acestor trei dimensiuni, se face și proiectarea distribuției datelor, alegând metoda cea mai potrivita cu arhitectura sistemului.
Arhitectura sistemului software dezvoltat este compusă din 2 module principale:
• Modulul de server
• Modulul de client
Scopurile sistemului sunt:
• Să permită pacienților să-și vizualizeze istoricul medical (consultații, analize etc.) prin intermediul aplicației web.
• Să permită doctorilor să vadă, să modifice și să introducă noi informații medicale prin intermediul aplicației java.
• Să permită doctorilor să vizualizeze toate consultațiile pacienților înregistrați (inclusiv pe cele pe care aceștia le-au făcut în alte cabinete medicale).
• Să permită noi dezvoltări ulterioare precum și o funcționare la scară largă. (este necesară existența aplicației și a unei baze de date locale în fiecare cabinet medical).
Am ales proiectarea unui sistem distribuit deoarece informațiile despre pacienți vor fi împărțite pe diferite baze de date. Pe scurt în fiecare cabinet medical va exista o bază de date locală, ce va fi administrată prin intermediul aplicației locale.
Sistemul va fi compus din 3 niveluri, fiecare nivel avand funcții diferite:
• Nivelul 1 ce constă într-un server central pe care se află localizat un SQL Server (Microsoft Sql)
Pe baza de date centrală vor fi stocate informațiile medicale primite de la toate cabinetele medicale. Aceasta va fi accesată atât de aplicația java cât și de aplicația web pentru a pune la dispoziție istoricul medical al unui pacient.
• Nivelul 2 compus din calculatoarele existente în cabinetele medicale
Datele culese de la pacient într-un cabinet medical vor fi transferate din baza de date locală în baza de date centrală, pentru a putea fi puse la dispoziția celorlalte cabinete medicale și pacienților. Acestea vor fi transferate de către fiecare doctor în momentul în care acesta le consideră finale.
• Niveul 3 alcătuit din calculatoarele ce accesează informațiile extern
Pacienții vor putea vizualiza anumite informații despre starea lor medicală prin intermediul unei aplicații ce poate fi accesată via internet.
Fig. 4.1 Arhitectura sistemului
• Arhitectura modulului client
Accesul la bazele de date locale se face prin intermediul unei aplicații ce va fi instalată pe calculatoarele din cabinetele medicale.
Aplicația locală a fost realizată folosind java ca limbaj de programare datorită:
• Independenței de platformă (o aplicație java poate rula fără nici o modificare și fără a necesita recompilarea ei pe sisteme de operare diferite cum ar fi Windows, Linux, Mac OS, Solaris etc.).
Calculatoarele din cabinetele medicale vor avea sisteme de operare diferite.
• Neutralității arhitecturale (comportamentul unei aplicații java nu depinde de arhitectura fizică a mașinii pe care rulează)
• Suport pentru bazele de date
Este necesar ca aplicația să se poată conecta la baza de date locală.
• Există clase deja implementate pentru a crea o interfața grafică atractivă și ușor de utilizat.
• Securitatea java
Aplicația java a fost realizată astfel încât să permită următoarele:
• Fiecare doctor poate adăuga noi informații medicale pacientului. Aplicația nu permite doctorilor modificarea informațiilor medicale ce nu au fost adăugate de către ei. Accesul la aplicație se face prin intermediul unei parole personale (specifică doctorului sau cabinetului respectiv).
• Fiecare doctor poate consulta istoricul medical al unui pacient ce a fost înregistrat în baza de date locală (rețete, tratament prescris, consultații etc.) în vederea oferirii unui diagnostic sau unui tratament cât mai precis și într-un timp cât mai rapid. Informațiile medicale ale pacienților
Aplicația poate accesa atât baza de date locală cât și baza de date centrală, pentru afișarea istoricului medical al unui pacient. În cazul cabinetelor medicale am folosit MySQL. Prin intermediul aplicației se va realiza tranferul informațiilor din baza de date locală în baza de date centrală.
• Arhitectura modulului server
Accesul la baza de date centrală se face prin intermediul unei aplicații web la care vor avea acces toți pacienții prin intermediul internetului.
Pentru baza de date centrală am ales Microsoft SQL Server datorită faptului că este recomandat pentru baze de date mari cu multe accesări concurente.
Baza de date centrală va prelua informații de la toate bazele de date locale, astfel neexistând pericolul ca aceasta să fie neactualizată.
Figura 4.2 Arhitectura modulului server
Aplicația Web a fost construită folosind următoarele limbaje de programare:
• Php, javascript, jquery – pentru partea de scripting
• Html, css – pentru partea grafica
• Ajax – pentru validarea anumitor informații
Accesul la aplicația web se face prin intermediul unui nume de utilizator și a unei parole. În cazul în care aceste informații nu se regăsesc sau nu coincid cu cele introduse în sistem accesul utilizatorului la aplicație va fi blocat, acesta fiind redirecționat într-o pagină generală.
Prin intermediul aplicației Web utilizatorul va putea avea acces la tot istoricul său medical (rezultate analize, tratamente, diagnostice etc).
• Tehnologii folosite
Aplicația locală este realizată folosind două limbaje de programare:
• Java – pentru crearea unei interfețe grafice cu ajutorul căreia utilizatorul să poate accesa și modifica mai ușor informațiile stocate în baza de date; pentru crearea unor algoritmi care să lucreze cu informațiile din baza de date.
• SQL – pentru stocarea informațiilor în baza de date. SGBD-urile (Sisteme de gestiune al bazelor de date) celor două baze de date sunt diferite, MySQL pentru cea locală și Microsoft SQL pentru cea centrală.
Aplicația Web este realizată folosind
• HTML – folosit pentru crearea paginilor web și prezentarea informațiilor.
• Php – pentru afișarea informațiilor din baza de date centrală; pentru dinamizarea paginilor web.
• Javascript – pentru introducerea unor funcționalități mai speciale în paginile web.
• Css – pentru formatarea elementelor documentului HTML.
• Java
Limbajul java a fost proiectat, împreuna cu mediul lui de dezvoltare și de execuție, pentru a dezvolta un software performant destinat aparatelor electronice de larg consum (mici, portabile, distribuite, lucrând în timp real).
Trăsături importante ale limbajului:[7]
• simplitatea
Java este un limbaj de programare ușor de învățat și de utilizat. Multe din caracteristicile complicate ce sunt întalnite în alte limbaje de programare au fost eliminate.
• portabilitatea
Aplicațiile java sunt independente de platformă. Un program java poate fi rulat pe orice platformă pe care e instalată o mașină virtuală Java (JVM).
• complet orientat pe obiecte
În Java se pot crea clase de obiecte și instanțe ale lor, se pot încapsula informațiile, suportându-se moștenirea simplă etc.
• securitatea Java.
Java este unul dintre cele mai sigure limbaje de programare, asigurând mecanisme stricte de securitate a programelor concretizate prin: verificarea dinamică a codului pentru detectarea secvențelor periculoase, impunerea unor reguli stricte pentru rularea programelor lansate pe calculatoare aflate la distanța, etc.
• este gratuit.
Atât mașina virtuală Java (JVM) cât și pachetul pentru dezvoltătorii de programe, JDK (Java Development Kit), sunt gratuite. De asemenea există și o sumedenie de medii de dezvoltare integrate (IDE) pentru Java care sunt free sau open source.
• neutralitate arhitecturală
Aplicațiile realizate în java nu depind de arhitectura fizică a mașinii pe care rulează.
• programele Java au dimensiuni mici
Programele realizate în java au dimensiuni mult mai mici în comparație cu cele realizate în alte limbaje de programare orientate pe obiect.
• multimedia: imagini, sunet, animație
Cu JMF (Java Media Framework) se pot crea ușor applet-uri și aplicații capabile să prezinte, captureze, manipuleze și stocheze date media dependente de timp. JMF este conceput pentru a suporta majoritatea standardelor media.
• robustețea
Java verifică apariția unor erori posibile, compilatoarele Java fiind capabile să detecteze erorile care în alte limbaje apar numai la execuție.
• Multithreading în Java
Prin multithreading se înțelege capacitatea unui program de a executa mai multe sarcini simultan. În java, mașina virtuală java (JVM) permite unei aplicații să aibă mai multe fire de execuție care rulează în același timp. Tehnica multithreading este folosită în special pentru Interfața Grafică Utilizator (Graphical User Interface – GUI) și programarea în rețea.
• java este dinamic
Limbajul de programare java a fost creat pentru a se adapta unui mediu în continuă schimbare. Noi metode și proprietăți pot fi adăugate într-o clasă fără a afecta clienții lor. De asemenea, java este capabilă să încarce clasele dorite în timpul execuției.
• Php, Javacript, Html, Css
Php este unul din cele mai importante limbaje de scripting, ce permite afișarea dinamică a conținutului de pe un server web.
Caracteristici:
• Este open-source
• Poate interacționa cu o bază de date pentru a afișa sau a modifica informațiile din ea
• Multe din construcțiile limbajului sunt împrumutate din C, ceea ce îl face ușor de învățat și înțeles
• Codul php se scrie între tagurile <?php și ?>
• Poate fi înglobat în codul HTML
• Este un limbaj server-side – prelucrarea codului php are loc pe un server
Javacript este un limbaj de programare orientat pe obiect ce are o sintaxă apropiată de cea a limbajului de programare C. Este folosit în mod special pentru introducerea unor funcționalități în paginile web. Spre deosebire de php codul javascript poate fi rulat direct în browser, la încărcarea paginii. Javascript poate fi înglobat în codul Html, între tagurile <script> și </script>.
Html reprezintă un limbaj folosit pentru crearea paginilor web. Este foarte ușor de învățat bazându-se pe taguri ce trebuie introduse pentru realizarea diferitelor elemente. De exemplu, pentru construcția unei pagini html ce conține un tabel cu un singur rând și o singură coloană se vor folosi următoarele taguri:
<html>
<head> </head>
<body>
<table>
<tr>
<td>
Coloană
</td>
</tr>
</table>
<body>
<html>
Css reprezintă un standard folosit pentru formatarea elementelor unui document Html. Poate fi înglobat în documentul HTML între tagurile <style> și </style>.
• MySql și Microsoft Sql
O bază de date, uneori numită și „bancă de date”, reprezintă o modalitate de stocare a unor informații și date pe un suport extern (un dispozitiv de stocare), cu posibilitatea extinderii ușoare și a regăsirii rapide a acestora. La prima vedere sarcina poate părea banală. Totuși, în condițiile în care este vorba de a lucra cu milioane de elemente, fiecare putând consta din mari cantități de date care trebuie accesate simultan prin Internet de către mii de utilizatori răspândiți pe întreg globul; și în condițiile când disponibilitatea aplicației și datelor trebuie să fie permanentă (de ex. pentru a nu pierde ocazia de a încheia afaceri), soluțiile bune nu sunt deloc simple.
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.
Între 2 tabele poate exista o relație atunci când este posibilă stabilirea unei asocieri între înregistrările celor doua tabele (realizarea unei conexiuni între doua tabele corelate din punct de vedere logic). Relațiile permit extragerea datelor din mai multe tabele simultan.
Tipuri de relații:
• one to one – o singură înregistrare din prima tabelă este în relație cu o singură înregistrare din cea de-a doua tabelă și o singură înregistrare din cea de-a doua tabelă este în relație cu o singură înregistrare din prima tabelă. În acest tip de relație cheia primară a tabelei părinte va fi luată și inclusă în structura tabelei copil unde va deveni cheie externă (câmp al unei tabele prin care se completează o relație identificând tabela părinte).
• one to many – o singură înregistrare din prima tabelă este în relație cu mai multe înregistrări din cea de-a doua tabelă, însă o înregistrare din cea de-a doua tabelă este în relație cu o singură înregistrare din prima tabelă. În acest tip de relație cheia primară a primei tabele va fi inclusă în structura celei de-a doua tabele.
• many to many – o înregistrare din prima tabelă este în relație cu mai multe înregistrări din cea de-a doua tabelă și o înregistrare din cea de-a doua tabelă este în relație cu mai multe înregistrări din prima tabelă. În baza de date o astfel de relație se stabilește printr-o tabelă de legătură, a cărei structură conține copii ale cheilor primare din fiecare tabelă. Cele două chei primare vor forma cheia primară a tabelei de legătură.
Structured Query Language (Limbaj Structurat de Interogare) reprezintă un limbaj de programare specific pentru manipularea datelor în sistemele de gestiune a bazelor de date relaționale, având la origine un limbaj bazat pe algebră relațională.
SQL are ca scop inserarea datelor, interogații, actualizare și ștergere, modificarea și crearea schemelor, precum și controlul accesului la date. Reprezintă cel mai popular limbaj utilizat pentru crearea, modificarea și manipularea datelor de către SGBD-urile relaționale (Sisteme de Gestiune a Bazelor de Date). SQL permite accesul atât la conținutul bazelor de date, cât și la structura acestora. [8]
• MySQL
MySQL reprezintă un sistem de gestiune a bazelor de date relaționale, produs de compania suedeza MySQL AB și distribuit sub Licența Publică Generală GNU. Este cel mai popular SGBD open-source la ora actuală, fiind o componentă cheie a stivei LAMP (Linux, Apache, MySQL, PHP). Este scris în C și C++. [9]
MySQL are o interfața SQL foarte complexă, dar și intuitivă și ușor de învățat. Deși este foarte des întâlnit alături de limbajul de programare PHP, cu ajutorul MySQL se pot construi aplicații în mult mai multe limbaje de programare, precum: Java, C, C++, Python etc. Pentru scrierea acestor aplicații se folosesc diverse API (Application Programming Interface), specifice fiecărui limbaj de programare în parte. Aceste API-uri permit accesarea de către aplicație a bazelor de date MySQL.
Caracteristici MySQL:
• viteză mare – MySQL reprezintă unul din cele mai rapide sisteme de bază de date.
• gratuit – poate fi descărcat gratuit de pe Internet. Există și câteva ediții cu plată, care au câteva funcționalități suplimentare.
• ușor de utilizat – deși este un sistem de baze de date cu performanțe ridicate, MySQL este relativ simplu și destul de ușor de învățat, având o configurare și administrare destul de simplă în comparație cu alte sisteme de baze de date.
• portabilitate – MySQL rulează atât pe Linux – LAMP cât și pe Windows – WAMP (de la calculatoare personale până la servere cu performanțe ridicate).
• API (Application Programming Interface) – permit accesarea de către aplicațiile scrise în alte limbaje de programe (Java, C, C++ etc.) a bazelor de date MySQL. Aceste API-uri sunt specifice fiecărui limbaj de programare în parte.
• suport pentru: clauze GROUP BY, ORDER BY; funcții de grup AVG(), COUNT(), MIN(), MAX(); LEFT OUTER JOIN și RIGHT OUTER JOIN; alias-uri pentru linii și coloane; operatori și funcții în clauzele SELECT și WHERE.
• folosește tabele temporare stocate în memorie.
• Microsoft SQL
Microsoft SQL reprezintă un sistem de gestiune a bazelor de date relaționale, produs de compania americana Microsoft.
Acesta este foarte des întâlnit alături de limbajele de programare VB și C#. Cu toate acestea cu ajutorul Microsoft SQL se pot construi aplicații în mult mai multe limbaje de programare, precum: Java, php etc. Pentru scrierea acestor aplicații se folosesc diverse API (Application Programming Interface), specifice fiecărui limbaj de programare în parte. Aceste API-uri permit accesarea de către aplicație a bazelor de date Microsoft SQL.
Caracteristici:
• Suportă ODBC (Open Database Connectivity) prin intermediul căruia se pot crea link-uri cu alte baze de date
• Permite dezvoltarea unor aplicații la scară mare
• Oferă un set de unelte grafice și servicii ce permit utilizatorilor să efectueze sarcini administrative simplu și eficient
• Securitate – accesul la datele gestionate de Microsoft SQL poate fi restricționat; pot fi impuse restricții utilizatorilor în privința operațiilor pe care pot să le efectueze
• Proiectarea aplicației
În vederea proiectării aplicației voi prezenta 7 aspecte importante:
• realizarea mecanismului de interacțiune a aplicației Java cu baza de date MySQL
• realizarea mecanismului de interacțiune a aplicației Java cu baza de date Microsoft SQL
• realizarea link-ului între MySQL și Microsoft SQL
• realizarea bazei de date MySQL
• realizarea bazei de date Microsoft SQL
• realizarea aplicației Java
• realizarea aplicației Web
• Interacțiunea Java – MySQL și Java – Microsoft SQL
Accesul la cele două baze de date (MySQL și Microsoft SQL) a fost realizat prin intermediul unor drivere (ce permit accesul la datele stocate în baza de date), responsabile cu legătura între aplicația Java și cele două baze de date.
În cazul realizării legăturii cu MySQL s-a folosit driverul “MySQL Connector/J”, ce poate fi descărcat de pe site-ul oficial MySQL, http://www.mysql.com/.
Pentru realizarea legăturii cu Microsoft SQL s-a folosit driverul “Microsoft JDBC Driver for SQL Server”, ce poate fi descărcat de pe site-ul http://msdn.microsoft.com/.
Aceste drivere au rolul de a converti JDBC (Java Database Connectivity) solicitat de protocolul de rețea folosit de cele două baze de date.
JDBC (Java Database Connectivity) reprezintă o interfață standard SQL de acces la baze de date. JDBC este constituită dintr-un set de clase și interfețe scrise în Java, furnizând mecanisme standard pentru proiectanții aplicațiilor de baze de date. Pachetul care oferă suport pentru lucrul cu baze de date este java.sql.[12]
Cu ajutorul JDBC-ului ne este ușor să transmitem secvențe SQL către o bază de date, acesta oferind aplicațiilor Java o modalitate de a comunica cu o bază de date SQL.
Rolul JDBC-ului este acela de a:
• stabili o conexiune cu baza de date
• trimite secvențe SQL
• a analiza și prelucra rezultatele
Baza de date va fi precizată prin intermediul unei adrese specifice numite JDBC url ce conține: un câmp sub-protocol, ce denumește tipul de driver ce trebuie folosit pentru realizarea conexiunii și identificatorul bazei de date, reprezentativ fiecărui driver care specifică baza de date cu care dorește să interacționeze.
În funcție de tipul driverului acest indentificator mai poate conține:
• numele serverului pe care rulează baza de date: “localhost” in cazul MySQL și „ADRENALINE” în cazul Microsoft SQL;
• userul: „root” în cazul MySQL și „tiger” în cazul Microsoft SQL;
• parola: „alexandru12” în cazul Microsoft SQL. Pentru userul “root” folosit de MySQL nu am setat nici o parolă;
• portul: 3306 în cazul MySQL și 1433 în cazul Microsoft SQL;
• numele bazei de date: “disertație” în cazul MySQL și “website” în cazul Microsoft SQL;
JDBC URL pentru MySQL
String server= "ADRENALINE";
int port=1433;
String user="tiger";
String password="alexandru12";
String database="website";
String url; url="jdbc:sqlserver://"+server+":"+port+";user="+user+";password="+password+";databaseName="+database+"";
JDBC URL pentru Microsoft SQL
String url;
url="jdbc:mysql://localhost:3306/"+bazaDate+"?user=root&password=";
La primirea acestui JDBC URL, DriverManager-ul va parcurge lista driver-elor înregistrate în memorie, pâna când unul dintre drivere va recunoaște URL-ul introdus de noi. În cazul în care niciun driver nu va recunoaște URL-ul, va fi lansată o exceptie de tipul SQLException, cu mesajul “no suitable driver”.
Pentru realizarea unei conecțiuni se folosește metoda getConnection din clasa DriverManager:
Connection conexiune;
conexiune = DriverManager.getConnection(url);
public class JDBCAdaptor extends AbstractTableModel{
static Connection conexiune;
static Statement stare;
static ResultSet rezultat;
static ResultSetMetaData meta;
String[] numeColoane ={};
Vector linii = new Vector();
static boolean facemActualizare = false;
static boolean editabila;
public JDBCAdaptor(String bazaDate) {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url = "jdbc:mysql://localhost:3306/"+bazaDate+"?user=root&password=";
conexiune = DriverManager.getConnection(url);
stare = conexiune.createStatement();
}catch(Exception ex) {
System.err.println("Eroare la conectare");
System.err.println(ex);
}}
În fragmentul anterior de cod am prezentat modul în care am făcut conectarea la baza de date MySQL. Conectorul MySQL – Java (com.mysql.jdbc.Driver) a fost importat în bibliotecile Java din programul Eclipse. Pentru conectarea la baza de date Microsoft SQL am folosit același fragment de cod schimbând variabila “url” și conectorul Microsft SQL – Java (com.microsoft.sqlserver.jdbc.SQLServerDriver).
Această metodă are ca parametru un String “bazaDate” ce reprezintă denumirea bazei de date pe care dorim să o folosim. Ori de câte ori dorim să facem o interogare vom apela următoarea secvență de cod.
JDBCAdaptor dt = new JDBCAdaptor("disertatie"); unde “disertație” reprezintă numele bazei de date pe care dorim să o utilizăm.
În cazul în care conexiunea nu este posibilă va fi afișat un mesaj de eroare.
public void trimiteInterogare(String intrebare) {
if (conexiune ==null || stare == null) {
System.err.println("Nu avem asupra cui sa facem interogarea");
return;
}
try {
rezultat = stare.executeQuery(intrebare);
meta = rezultat.getMetaData();
int numarColoane = meta.getColumnCount();
numeColoane= new String[numarColoane];
for (int c=0; c<numarColoane; c++) {
numeColoane[c] = meta.getColumnLabel(c+1);
}
linii = new Vector();
int incep=1;
while(rezultat.next()) {
incep++;
Vector l = new Vector();
for (int i=1; i<= getColumnCount(); i++) {
l.addElement(rezultat.getObject(i));
}
linii.addElement(l);
}
}
catch(SQLException ex) {
System.err.println("Errror!" );
}}
O altă metodă construită în cadrul clasei JDBCAdaptor/JDBCAdaptorMSSQL, “public void trimiteInterogare(String intrebare)” are rolul de a analiza interogarea pe care dorim să o realizăm și de a o afișa într-un tabel, în cazul în care se dorește. După cum se observă această metodă are ca parametru un String (intrebare), ce reprezintă cererea SQL. În cadrul aplicației această metodă va fi apelată astfel:
String SqlDetaliiDoctor;
SqlDetaliiDoctor="SELECT d.Nume, d.Prenume, ifnull(dd.telefon,''), ifnull(dd.email,''), ifnull(dd.data_nasterii,''), ifnull(dd.oras,''), ifnull(dd.judet,''), ifnull(dd.adresa,''), s.Specializare, ifnull(dd.Imagine,'')
FROM doctori d LEFT JOIN detalii_doctori dd on d.indicativ_doctor=dd.indicativ_doctor INNER JOIN specializare s on s.indicativ_specializare=d.indicativ_specializare
WHERE d.indicativ_doctor='"+Cabinet.doctorSelectat+"'";
dt.trimiteInterogare(SqlDetaliiDoctor);
• Link MySQL – Microsoft SQL
Pentru transmiterea anumitor informatii din baza de date MySQL in baze de date Microsoft SQL am creat un link între cele două servere. Acest lucru a fost realizat folosind driverul MySQL Connector/ODBC, ce poate fi descărcat de pe site-ul http://www.mysql.com/downloads/connector/odbc/.
• Configurare DSN (Data Source Name)
DSN reprezintă o structură de date ce conține informații cu privire la o baza de date specifică, informații de care driver-ul ODBC are nevoie pentru a se conecta la ea.
Fig. 6.1 Configurare DSN
• Crearea unui link folosind SSMS (SQL Server Management Studio).
Pentru crearea unui link cu serverul MySQL în SSMS, se va expanda Server Objects, după care se va da click dreapta pe Linked Server si se va alege New Linked Server. Se va deschide o fereastră în care se va configura link-ul.
Fig. 6.2 Creare Link
• Structura bazei de date de tip MySql
Pentru realizarea bazei de date MySQL am folosit managerul online phpMyAdmin din pachetul XAMPP.
Denumirea bazei de date este “disertatie”.
Baza de date este compusă din 8 tabele:
• conturi
• specializare
• doctori
• detalii_doctori
• rezervari
• pacienti
• consultatii
• detalii_consultatii
Tabela “conturi” conține datele de logare la aplicația Java ale doctorilor din cabinet.
Această tabelă se află în relație cu o tabelă din baza de date.
• Relație one-to-one cu tabela “doctori”
Fig. 6.3 Tabela “conturi”
Tabela “conturi” este formată din 3 câmpuri:
• indicativ_doctor – reprezintă un indicativ alocat automat doctorului, de exemplu 1. Este de tip int, având o lungime de 11 biți și nu poate fi NULL. Indicativ_doctor este atât cheie primară cât și cheie externă pentru tabela “conturi” (face referire la câmpul indicativ_doctor din tabela “doctori”). Cu ajutorul acestei chei externe vor putea fi preluate anumite informații dorite din tabela “doctori”..
• user – reprezintă numele pe care doctorul îl va folosi pentru a se loga la aplicația Java. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
• Parola – reprezintă parola folosită de doctor pentru a se loga la aplicația Java. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL. Parola va fi criptate MD5 și apoi introdusă în baza de date
Tabela “specializare” conține toate specializările doctorilor ce profesează în cabinetul medical respectiv.
Fig. 6.4 Tabela “specializare”
Tabela “specializare” este formată din 2 câmpuri:
• indicativ_specializare – reprezintă un indicativ alocat automat specializării, de exemplu 1. Este de tip int, având o lungime de 11 biți și nu poate fi NULL. Indicativ_specializare este cheie primară pentru tabela “specializare” și se incrementează ori de câte ori se va introduce o specializare în baza de date.
• Specializare – reprezintă denumirea specializării. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
Tabela “doctori” conține denumirea și specializarea doctorilor ce profesează în cabinetul medical respectiv.
Această tabelă se află în relație cu o tabelă din baza de date.
• Relație many-to-one cu tabela “specializare”
Fig. 6.5 Tabela “doctori”
Tabela “doctori” este formată din 4 câmpuri.
• indicativ_doctor – reprezintă un indicativ alocat automat doctorului, de exemplu 1. Este de tip int, având o lungime de 11 biți și nu poate fi NULL. Indicativ_doctor este cheie primară pentru tabela “doctori” și se incrementează ori de câte ori se va introduce un doctor în baza de date.
• Nume – reprezintă numele doctorului. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
• Prenume – reprezintă prenumele doctorului. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
• indicativ_specializare – reprezintă indicativul alocat specializării doctorului. Este de tip int, având o lungime de 11 biți și nu poate fi NULL. Indicativ_specializare este cheie externă pentru tabela “doctori” (face referire la câmpul indicativ_specializare din tabela “specializare”). Cu ajutorul acestei chei externe vor putea fi preluate anumite informații dorite din tabela “specializare”.
Tabela “detalii_doctori” conține diverse informații despre doctorii ce profesează în cabinetul respectiv.
Această tabelă se află în relație cu o tabelă din baza de date.
• Relație one-to-one cu tabela “doctori”
Fig. 6.6 Tabela “detalii_doctori”
Tabela detalii_doctori este formată din 8 câmpuri.
• indicativ_doctor – reprezintă un indicativ alocat automat doctorului, de exemplu 1. Este de tip int, având o lungime de 11 biți și nu poate fi NULL. Indicativ_doctor este atât cheie primară cât și cheie externă pentru tabela “detalii_doctori” (face referire la câmpul indicativ_doctor din tabela “doctori”). Cu ajutorul acestei chei externe vor putea fi preluate anumite informații dorite din tabela “doctori”.
• telefon – reprezintă numărul de telefon al doctorului. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
• email – reprezintă adresa de e-mail a doctorului. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
• data_nașterii – reprezintă data de naștere a doctorului. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
• oras – reprezintă localitatea în care trăiește doctorul. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
• judet – reprezintă județul în care locuiește doctorul. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
• adresa – reprezintă adresa doctorului din CI. Este de tip VARCHAR, având o lungime de 300 de caractere și nu poate fi NULL.
• imagine – reprezintă calea către fotografia doctorului. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
Tabela “rezervari” conține consultațiile programate de către doctori.
Această tabelă se află în relație cu o tabelă din baza de date.
• Relație many-to-one cu tabela “doctori”
Fig. 6.7 Tabela “rezervari”
Tabela “rezervari” este formată din 6 câmpuri.
• indicativ_rezervare – reprezintă un indicativ alocat automat programării, de exemplu 1. Este de tip int, având o lungime de 11 biți și nu poate fi NULL. Indicativ_rezervare este cheie primară pentru tabela “rezervari” și se incrementează ori de câte ori se va introduce o rezervare în baza de date.
• indicativ_doctor – reprezintă indicativul doctorului ce are de efectuat consultația. Este de tip int, având o lungime de 11 biți și nu poate fi NULL. Indicativ_doctor este cheie externă pentru tabela “rezervari” (face referire la câmpul indicativ_doctor din tabela “doctori”). Cu ajutorul acestei chei externe vor putea fi preluate anumite informații dorite din tabela “doctori”.
• nume_pacient – reprezintă numele pacientului programat pentru consultație. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
• prenume_pacient – reprezintă prenumele pacientului programat pentru consultație. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
• data – reprezintă data în care este programată consultația. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
• ora – reprezintă ora la care este programată consultația. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
Tabela “pacienti” conține informatii despre pacienții care au efectuat cel puțin o consultație în cabinetul medical respectiv.
Fig. 6.8 Tabela “pacienti”
Tabela “pacienti” este formată din 19 câmpuri.
• CNP – reprezintă CNP-ul pacientului înregistrat în sistem. Este de tip VARCHAR, având o lungime de 30 de caractere și nu poate fi NULL. CNP este cheie primară pentru tabela “pacienti”.
• Nume – reprezintă numele pacientului înregistrat în sistem. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
• Prenume – reprezintă prenumele pacientului înregistrat în sistem. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
• Telefon – reprezintă numărul de telefon al pacientului înregistrat în sistem. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• Email – reprezintă adresa de e-mail a pacientului înregistrat în sistem. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• DataNasterii – reprezintă data nașterii pacientului înregistrat în sistem. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• Sex – reprezintă sexul pacientului înregistrat în sistem (masculin sau feminin). Este de tip VARCHAR, având o lungime de 1 caracter și nu poate fi NULL.
• Serie – reprezintă seria buletinului pacientului înregistrat în sistem. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• Numar – reprezintă numărul seriei buletinului pacientului înregistrat în sistem. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• Permis – în acest câmp este specificat dacă pacientul are sau nu permis de conducere. Este de tip VARCHAR, având o lungime de 2 de caractere și nu poate fi NULL.
• Profesie – reprezintă profesia pacientului înregistrat în sistem. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• Localitatea – reprezintă localitatea unde trăiește pacientul înregistrat în sistem. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• Judet – reprezintă județul în care locuiește pacientul înregistrat în sistem. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• Strada – reprezintă numele străzii pe care locuiește pacientul înregistrat în sistem. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• Nr – reprezintă numărul străzii pe care locuiește pacientul înregistrat în sistem. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• Bloc – reprezintă numărul blocului în care locuiește pacientul înregistrat în sistem. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• Scara – reprezintă numărul scării de bloc în care locuiește pacientul înregistrat în sistem. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• Ap – reprezintă numărul apartamentului din blocul în care locuiește pacientul înregistrat în sistem. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• Obs – reprezintă diverse observații ce pot fi trecute în dreptul pacientului. Este de tip VARCHAR, având o lungime de 1000 de caractere și nu poate fi NULL.
Tabela “consultatii” conține informații despre consultațiile ce au avut loc în cabinetul medical respectiv.
Această tabelă se află în relație cu 2 tabele din baza de date.
• Relație many-to-one cu tabela “doctori”
• Relație many-to-one cu tabela “pacienti”
Fig. 6.9 Tabela “consultatii”
Tabela “consultatii” este formată din 4 câmpuri.
• indicativ_consultatie – reprezintă un indicativ alocat automat consultației, de exemplu 1. Este de tip int, având o lungime de 11 biți și nu poate fi NULL. Indicativ_consultatie este cheie primară pentru tabela “consultatii” și se incrementează ori de câte ori se va introduce o consultatie în baza de date.
• indicativ_doctor – reprezintă indicativul doctorului ce a efectuat consultația. Este de tip int, având o lungime de 11 biți și nu poate fi NULL. Indicativ_doctor este cheie externă pentru tabela “consultatii” (face referire la câmpul indicativ_doctor din tabela “doctori”). Cu ajutorul acestei chei externe vor putea fi preluate anumite informații dorite din tabela “doctori”.
• CNP – reprezintă CNP-ul pacientului consultat. . Este de tip VARCHAR, având o lungime de 30 de caractere și nu poate fi NULL. CNP este cheie externă pentru tabela “consultatii” (face referire la câmpul CNP din tabela “pacienti”). Cu ajutorul acestei chei externe vor putea fi preluate anumite informații dorite din tabela “pacienti”.
• transferat – În acest câmp se va salva valoare 0 de fiecare data când o consultație este adăugată în baza de date. În momentul în care o consultație este transferată în baza de date centrală acest câmp va lua valoarea 1. Este de tip bit, având o lungime de 1 bit și nu poate fi NULL.
Tabela “detalii_consultatii” conține toate detaliile consultațiilor ce au avut loc în cabinetul medical respectiv.
Această tabelă se află în relație cu o tabelă din baza de date.
• Relație one-to-one cu tabela “consultatii”
Fig. 6.10 Tabela “detalii_consultatii”
Tabela “detalii_consultatii” este formată din 6 câmpuri.
• indicativ_consultatie – reprezintă un indicativ alocat automat consultatiei, de exemplu 1. Este de tip int, având o lungime de 11 biți și nu poate fi NULL. Indicativ_ consultatie este atât cheie primară cât și cheie externă pentru tabela “detalii_consultatii” (face referire la câmpul indicativ_consultatie din tabela “consultatii”). Cu ajutorul acestei chei externe vor putea fi preluate anumite informații dorite din tabela “consultatii”.
• Data – reprezintă data în care a fost efectuată consultația. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
• Ora – reprezintă ora la care a fost efectuată consultația. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
• Diagnostic – reprezintă denumirea afecțiunii/bolii ce a fost identificată în urma consultației . Este de tip VARCHAR, având o lungime de 5000 de caractere și nu poate fi NULL.
• Reteta – reprezintă tratamentul recomandat de către doctor. Este de tip VARCHAR, având o lungime de 5000 de caractere și nu poate fi NULL.
• Obs – reprezintă diverse observații/detalii ce pot fi trecute în dreptul consultației. Este de tip VARCHAR, având o lungime de 5000 de caractere și nu poate fi NULL.
Fig. 6.11 Relații tabele bază de date
• Structura bazei de date de tip Microsoft Sql
Pentru realizarea bazei de date Microsoft SQL am folosit managerul online phpMyAdmin din pachetul XAMPP.
Denumirea bazei de date este website.
Baza de date este compusă dintr-o singură tabelă:
• Consultatii
Tabela “Consultatii” conține toate consultațiile ce au fost transferate de la cabinetele medicale în baza de date centrală. Asocierea pacient-consultații se face prin intermediul CNP-ului care este unic pentru fiecare persoană.
Tabela “Consultatii” este formată din 10 câmpuri.
• Indicativ – reprezintă un indicativ alocat automat consultatiei în momentul transferului în baza de date centrală, de exemplu 1. Este de tip int și nu poate fi NULL. Indicativ este atât cheie primară pentru tabela “Consultatii”.
• CNP – reprezintă CNP-ul pacientului consultat. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• Nume – reprezintă numele pacientului ce a fost consultat. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• Prenumele – reprezintă prenumele pacientului ce a fost consultat. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• Data – reprezintă data în care a fost efectuată consultația. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• Ora – reprezintă ora la care a fost efectuată consultația. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• Doctor – reprezintă numele și prenumele doctorului ce a efectuat consultația. Este de tip VARCHAR, având o lungime de 100 de caractere și nu poate fi NULL.
• TipConsultație – reprezintă specializarea doctorului ce a efectuat consultația. Este de tip VARCHAR, având o lungime de 50 de caractere și nu poate fi NULL.
• Diagnostic – reprezintă denumirea afecțiunii/bolii ce a fost identificată în urma consultației. Este de tip VARCHAR, având o lungime de 5000 de caractere și nu poate fi NULL.
• Reteta – reprezintă tratamentul recomandat de către doctor. Este de tip VARCHAR, având o lungime de 5000 de caractere și nu poate fi NULL.
• Obs – reprezintă diverse observații/detalii ce pot fi trecute în dreptul consultației. Este de tip VARCHAR, având o lungime de 5000 de caractere și nu poate fi NULL.
• Manual de utilizare a aplicației java
Accesul la aplicație se va face pe baza unei ferestre de logare:
Fig. 6.12 Fereastra de logare
Cele doua campuri (Utilizator si parola) vor fi completate cu numele de utilizator si parola acestuia. Fiecare doctor din cabinet va avea propriul nume de utilizator si parola.
După completarea celor două campuri, se va apăsa butonul “Logare”. Dacă datele au fost corect scrise fereastra de logare se va închide și se va deschide aplicația propriu zisă. În caz contrar va fi afișat un mesaj de atenționare (Datele introduse nu sunt corecte), iar cele două câmpuri (utilizator și parolă) vor fi resetate.
Odată logat în aplicație se va deschide o nouă fereastră ce conține bara de meniu destinată doctorului logat, precum și informații despre programările pe care acesta le are de onorat.
Bara de meniu este formată din:
• Meniul Cabinet ce conține submeniurile:
• Doctori
• Specializări
• Pacienți
• Meniul Doctori ce conține submeniurile:
• Programări
• Opțiuni
• Meniul Consultații ce conține submeniurile:
• Private
• Cabinet
• Meniul Pacienți ce conține submeniurile:
• Adaugă pacient
• Caută pacient
• Meniul Edit ce va conține submeniul:
• Configurare cont
• Meniul Exit
Fig. 6.13 Fereastra principală
Totodată în fereastra principală vor fi prezentate câteva detalii ce constau în:
• Numele doctorului
• Numărul de consultații programat în ziua respectivă
• Un tabel ce conține toate consultațiile pe care doctorul logat le are programate pentru ziua respectivă
În tabel vor fi afișate următoarele elemente: Indicativul consultației, numele și prenumele pacientului, precum și data și ora când este programată consultația.
• Butonul “Transfera consultatiile”
Butonul “Transfera consultatiile” realizează transferul consultațiilor, împreună cu alte informații, din baza de date locală în cea centrală, cu scopul de a le pune la îndemâna altor doctori din alte cabinete ce folosesc această aplicație, precum și a pacienților prin intermediul aplicației web.
Consultațiile transferate, în urma apăsării butonului, vor fi marcate ca transferate în baza de date locală, astfel încât aceeași consultație să nu mai poată fi transferată încă o data în baza de date centrală.
• Meniul Cabinet
Acest meniu este destinat prezentării cabinetului (doctori ce profesează în cabinet, specializările cabinetului, pacienți ce au trecut prin cabinet).
• Submeniul Doctori
Accesând acest submeniu, orice doctor logat va putea vizualiza lista doctorilor ce profesează în unitatea medicală în care este instalată aplicația.
Fig. 6.14 Submeniul Doctori
Pentru vizualizarea tuturor doctorilor ce profesează în cabinetul medical se va apăsa butonul “Vizualizare toti doctorii”. În urma apăsării acestui buton într-un tabel similar celui din figura 6.14 se vor afișa: numele, prenumele, precum și cu specializarea acestora.
Dacă se dorește căutarea unui doctor în funcție de anumiți parametri (Nume, Prenume, Specializare) se pot completa câmpurile din partea stângă a imaginii, după care se va apăsa butonul “Cauta doctor”. Rezultatul sau rezultatele vor fi afișate în tabel la fel ca și în cazul “Vizualizare toti doctorii”, în funcție de parametrii introduși.
Este obligatorie completarea a cel puțin unui câmp înainte de a apăsa butonul “Cauta doctor”.
În cazul în care se dorește accesarea anumitor informații despre un anumit doctor, afișat în urma căutării sau vizualizării totale, este necesară selectarea doctorului din tabel urmată de apăsarea butonului “Vizualizare detalii doctor”. Astfel se va deschide o nouă fereastră în care vor fi prezentate câteva detalii despre acesta:
• Nume
• Prenume
• Telefon
• Data nașterii
• Domiciliul: Județ, Localitate, Adresă
• Specializare
• Poza doctorului (în cazul în care nu există o poză a doctorului selectat va fi afișat “Photo not available”)
Fig. 6.15 Detalii doctor
• Submeniul Specializari
Un cabinet medical poate avea una sau mai multe specializări medicale. În cadrul acestui submeniu doctorul logat va putea accesa lista tuturor specializărilor cabinetului respectiv.
Fig. 6.16 Vizualizare specializări
Pentru vizualizarea tuturor specializărilor cabinetului medical este necesar să se apese butonul “Vizualizare toate specializările”. În urma apăsării butonului va fi afișat un tabel ce conține denumirile tuturor specializărilor din cabinetul medical.
Dacă se dorește căutarea unei anumite specializari se va completa câmpul “Denumire specializare” după care se va apăsa butonul “Cauta specializare”. Rezultatul obținut va fi afișat în tabel la fel ca și în cazul “Vizualizare toate specilizările”, în funcție de denumirea introdusă.
• Submeniul Pacienti
In cadrul acestui submeniu va fi afișat un tabel ce conține anumite informații despre pacienții ce au fost consultați în cadrul cabinetului:
• Nume
• Prenume
• CNP
Fig. 6.17 Submeniul Pacienti
Pentru vizualizarea anumitor detalii despre pacienți se va selecta pacientul dorit din tabel după care se va apăsa butonul “Vizualizare detalii pacient”.
Fig. 6.18 Vizualizare detalii pacient
Se va deschide o nouă fereastră în care vor fi afișate toate informațiile știute despre pacientul respectiv. În această fereastră orice modificare poate fi făcută asupra datelor pacientului, excepție făcând câmpul CNP, ce este folosit pentru identificarea pacientului. Pentru ca modificarea să fie salvată în sistem se va apăsa butonul “Modifica Date Pacient”.
Prin apăsarea butonului “Vizualizeaza consultatii in cabinet” putem vizualiza toate consultațiile de care pacientul selectat a beneficiat in cadrul cabinetului medical.
Astfel se va deschide o nouă fereastră ce conține numele pacientului, numărul consultațiilor pe care acesta le-a avut în cabinet, precum și un tabel ce conține diverse informații despre consultații.
Fig. 6.19 Vizualizeaza consultatii in cabinet
În cazul în care se dorește vizualizarea mai multor detalii despre o anumită consultație aceasta poate fi selectată din tabel, după care se va apăsa butonul “Vizualizeaza consultatia”.
Noua fereastră deschisă va conține toate informațiile disponibile despre consultația respectiva precum: indicativul consultației, numele și prenumele pacientului, numele și prenumele doctorului ce a realizat consultația, tipul de consultație, data consultației, diagnosticul dat de către doctor în urma consultației, rețeta prescrisă de către doctor, alte observații cu privire la consultație.
Fig. 6.20 Vizualizeaza consultatia
Orice consultație poate fi exportată într-un fișier pdf prin accesarea butonului “Exporta Consultatia”.
Fișierul pdf exportat va conține următoarele informații:
Fisa de consultatie
Nr. 3
Pacient/Pacienta Viorel Marcu, posesor/posesoare al CI cu CNP 12321321321, seria PH, nr.
342344, sex M, nascut/nascuta in data de 12.03.2014
Domiciliul: judetul Prahova, localitatea Ploiesti, strada Domnisori, nr. 12, bloc 45, scara A,
apartament 12
Ocupatia: Inginer
Posesor/Posesoare permis de conducere: Da
Telefon:07335535353
Adresa E-Mail:[anonimizat]
Consultatie facuta de catre doctorul Popescu Maria cu specialitatea General in data de 12.06.2014.
In urma consultatiei s-au observat urmatoarele:
Diagnostic pacient/pacienta:
Rubeola
Reteta prescrisa:
Paracetamol
Observatii consultatie:
De 6 ori pe zi
• Meniul Doctori
Acest meniu este destinat doctorului logat.
• Submeniul Programari
Prin alegerea submeniului Programari doctorul logat va putea vizualiza toate programarile pe care le are de onorat.
Fig. 6.21 Submeniul “Programari”
Tabelul de programări afișat poate fi restrâns la o anumită zi prin completarea datei in textbox-ul respectiv, urmată de apăsarea butonului “Cauta programare dupa data”.
Pentru crearea unui noi programări se va apăsa butonul “Adauga Programare”. Se va deschide o noua fereastră ce conține informațiile ce trebuie completate pentru a putea adăuga o noua programare: Nume Pacient, Prenume Pacient, Data Programarii de forma zz.ll.aaaa, Ora programarii de forma hh:mm.
Fig. 6.22 Adaugă programare
Pentru a putea adăuga o nouă programare este necesar să completăm toate câmpurile afișate. În caz contrar, la apăsarea butonului “Adauga Programare” va fi afișat urmatorul mesaj de eroare “Va rugam sa completati toate campurile”.
În cazul în care se dorește ștergerea unui programări, aceasta va fi selectată din tabel, după care se va apăsa butonul “Șterge Programare”.
Ori de câte ori ștergem sau adăugăm o programare tabelul ce conține toate progrămările va fi actualizat în funcție de operația realizată.
Prin apăsarea butonului “Vizualizeaza Programarea” se va deschide o fereastra nouă asemănătoare cu cea din figura 10, diferența constând în faptul că toate câmpurile sunt completate. Orice câmp, excepție făcând câmpul ce conține numele doctorului, poate fi modificat și salvat în sistem prin apăsarea butonului “Modifica Programarea”.
• Submeniul Optiuni
Acest submeniu conține aceleași informații prezentate în fereastra de deschidere a aplicației.
• Meniul Consultatii
În cadrul acestui meniu vor putea fi vizualizate atât consultațiile tuturor doctorilor din cabinet cât și consultațiile private (ce aparțin doctorul logat)
• Submeniul Private
Fig. 6.23 Consultatii private
Prin accesarea submeniului “Private” din meniul “Consultatii” este posibilă vizualizarea consultațiilor doctorului logat în funcție de data, nume pacient, CNP pacient.
Căutarea consultațiilor se va face astfel:
• Se va completa câmpul “Data” cu data în care se dorește afișarea consultațiilor,după care se va apăsa butonul “Cauta consultatii”. Este necesar ca data să fie de forma ZZ.LL.AAAA.
• Se va complete câmpul “Pacient” cu numele și prenumele pacientului, după care se va apăsa butonul “Cauta consultatii”.
• Se va complete câmpul “CNP Pacient” cu CNP-ul pacientului consultat, după care se va apăsa butonul “Cauta consultatii”.
Căutarea consultațiilor se poate face în funcție de unul sau mai multe din criteriile prezentate anterior. Toate consultațiile returnate vor fi afișate în tabelul prezentat în partea de jos a imaginii.
Dacă se dorește vizualizarea tuturor consultațiilor pe care doctorul logat le-a efectuat se va apăsa butonul “Vizualizeaza toate consultatiile”.
Pentru vizualizarea unei consultații se va selecta din tabel consultația dorită, după care se va apasă butonul “Vizualizeaza detalii consultatie”.
Fig. 6.24 Vizualizeaza detalii consultatie
În urma apăsării acestui buton se va deschide o nouă fereastră în care vor fi prezentate câteva detalii ale consultației respective:
• Indicativ consultație – reprezintă un număr unic, un identificator dat fiecărei consultații
• Pacient – numele și prenumele pacientului ce a participat la consultație;
• Doctor – numele și prenumele doctorului ce a realizat consultația;
• Tip consultație – specializarea doctorului ce a realizat consultația;
• Dată consultație
• Diagnostic – afecțiunea/boala identificată în urma consultației;
• Rețetă/Prescriere – tratamentul prescris pacientului;
• Observații – constatările obținute în urma consultație.
Consultația vizualizată poate fi exportată într-un fisier pdf (butonul “Exporta consultatia”) sau modificată (butonul “Modifica Consultatia”). Consultația poate fi modificată doar dacă nu a fost transferată în baza de date centrală. În cazul în care aceasta a fost deja transferată de către doctor, butonul de modificare va deveni inactiv.
• Submeniul Cabinet
Submeniul “Cabinet” este asemănător cu submeniul “Private”, diferența constând în faptul că aici pot fi căutate și vizualizate toate consultațiile ce au fost realizate de către toți doctorii cabinetului.
Fig. 6.25 Submeniul “Cabinet”
• Meniul “Pacienti”
În meniul “Pacienti” se vor putea adăuga noi pacienți in baza de date locală, precum și vizualiza informații despre istoricul medical al acestora.
• Submeniul “Adauga Pacient”
Prin alegerea submeniului “Adauga Pacient” se vor putea adăuga noi pacienți în baza de date locală a cabinetului respectiv.
Fig. 6.26 Submeniul “Adauga Pacient”
Informațiile ce trebuie completate pentru adăugarea unui pacient în baza de date sunt împarțite în 3 categorii:
• Date personale – ce constau în: numele pacientului, prenumele pacientului, numărul de telefon, e-mail-ul, data nașterii, sex (masculin sau feminin).
• Date de identificare – ce constau in: CNP (codul numeric personal din CI) pacient, seria și numărul CI, permis (“Da” în cazul în care pacientul deține permis auto sau “Nu” în cazul în care acesta nu deține permis auto), profesie pacient.
• Adresa pacientului – ce constă în: localitate, județ, stradă, număr, bloc, scară, apartament, precum și alte observatii ce pot fi precizate în acest caz.
Toate câmpurile din fereastră, cu excepția câmpurilor “Bloc”,”Scara”,”Ap.”,”Observatii”, sunt obligatorii.
După completarea tuturor câmpurilor se va apăsa butonul „Adauga Pacient”, imediat fiind afișat un mesaj care să confirme dacă pacientul a fost sau nu adăugat în baza de date locala.
Pacientul nu va putea fi adăugat în baza de date locală în cazul în care există deja înregistrat un pacient cu același CNP. CNP-ul reprezintă cheia prin care se realizează transferul consultațiilor din baza de date locală în cea centrală.
• Submeniul “Cauta Pacient”
Dacă se dorește vizualizarea informațiilor despre un anumit pacient se va alege submeniul „Cauta Pacient” din meniul „Pacienti”.
Fig. 6.27 Submeniul “Cauta Pacient”
Căutarea pacienților se poate face în funcție de nume, prenume sau CNP. Este obligatorie completarea a cel putin unui criteriu de cautare înainte de apăsarea butonului “Cauta Pacient”. În caz contrar va fi afisat un mesaj de eroare “Pentru cautarea pacientilor este necesar sa selectati cel putin un criteriu de cautare”.
La apăsarea butonului „Cauta Pacient” rezultatele vor fi afișate într-un tabel la fel ca și în cazul celorlalte submeniuri ce conțin căutări sau afișări. În cazul în care căutarea nu va returna nici un rezultat va fi afișat un mesaj de atentionare “Nu exista nici un pacient conform criteriilor completate”.
Dacă se dorește vizualizarea sau modificarea datelor unui anumit pacient se va selecta pacientul dorit din tabel, după care se va apăsa butonul “Vizualizare detalii pacient”.
Astfel se va deschide fereastra cu detaliile pacientului, prezentată în submeniul “Pacienti” din meniul “Doctori”.
Pentru modificarea datelor este necesar să se modifice unul sau mai multe câmpuri după care să se apase butonul “Modifica date pacient”. În cazul în care datele au fost modificate cu succes va fi afișat următorul mesaj: “Datele pacientului cu CNP-ul xxxxxxxxxxxx au fost modificate cu succes”.
Câmpul CNP este blocat, acesta neputând fi modificat de către doctor.
Pentru adăugarea unei consultații se va selecta pacientul din tabel după care se va apăsa butonul “Adauga consultatie”. Fereastra nou deschisă va conține câmpurile ce trebuie completate pentru adăugarea unei consultații.
Anumite câmpuri precum “Pacient”, “Doctor”, “Tip consultatie”, “Data consultatie”, “Ora consultatie” vor fi completate automat cu informații din baza de date sau ale zilei curente. Toate câmpurile din fereastră sunt obligatorii.
Fig. 6.28 Adaugă consultație
În cazul în care se dorește vizualizarea istoricului medical al unui pacient, se va selecta pacientul din tabel după care se va apăsa butonul “Vizualizare istoric medical”. Astfel se vor putea accesa informații despre consultațiile pe care pacientul le-a făcut în alte cabinete medicale ce folosesc același sistem. Aceste informații nu vor mai fi preluate din baza de date locală ci din baza de date centrală, afișarea acestora făcându-se la fel ca în cazul celor locale din submeniul “Pacienti”, meniul “Cabinet”.
Pe baza acestor informații se va putea ține cont de tot istoricul medical al pacientului respectiv în stabilirea diagnosticului sau tratamentului.
• Meniul Editare
• Submeniul “Configurare Cont”
În acest submeniu se vor putea configura următoarele informații ale doctorului logat: Nume, prenume, telefon, e-mail, data nașterii, adresă CI, precum și specializarea în cazul în care aceasta a fost schimbată sau a fost obținută alta.
Fig. 6.29 Configurare Cont
În cazul în care se dorește salvarea noilor informații configurate, este necesar să introducem utilizatorul și parola înainte de apăsarea butonului “Schimbare Informatii”. Acest lucru reprezintă o măsură de precauție cum că cel ce editează contul este cel logat.
Fiecare aplicație locală are o parte administrativă în care se pot adăuga noi conturi de acces la aplicație, noi specializări și noi doctori. Pentru fiecare cabinet există un singur administrator. Accesul la partea administrativă se face pe baza unui nume de utilizator și a unei parole ce vor fi comunicate în momentul în care aplicația este configurată pe calculator.
• Meniul File
La alegerea submeniului Exit din meniul “File” aplicația se va închide.
• Manual de utilizare a aplicației web
Aplicația web permite pacienților să-și vizualizeze online rezultatele consultațiilor realizate în cabinetele medicale ce aparțin sistemului.
Aceasta va fi disponibila doar utilizatorilor înregistrați în sistem, ce au cel puțin o consultație făcută.
Logarea în aplicație se va face pe baza unui nume de utilizator și a unei parola. Atât utilizatorul cât și parola sunt stabilite automat de către sistem în momentul în care prima consultație va fi disponibilă.
Numele de utilizator va fi obținut prin concatenarea numelui și prenumelui pacientului, exemplu marcu.adrian. Parola de logare în aplicație va fi compusă din CNP-ul pacientului/utilizatorului. În cazul în care în baza de date centrală nu există o înregistrare/consultație care să conțină aceste date de logare, utilizatorul nu va fi lăsat să se logheze în aplicație.
Fig. 6.30 Pagina principala a platformei online de vizualizat istoricul medical
Bara de meniu a platformei este formată din 3 submeniuri:
• acasa – pagina principală
• detalii – în acest submeniu vor fi prezentate câteva detalii despre modul de afișare a consultațiilor și operațiile ce pot fi executate după logarea în platformă
• contact – reprezintă o pagină de contact în care pot fi adresate diverse întrebări
Pentru logarea în aplicație este necesară completarea datelor Client ID și Parola și apăsarea butonului de Login. În cazul în care datele completate nu sunt corecte, nu există în sistemul nostru, va fi afișat un mesaj de eroare. În caz contrar, utilizatorul este redirecționat către o pagină nouă, în care sunt afișate toate consultațiile realizate.
Fig. 6.31 Pagina parola uitata
În cazul în care combinația de nume de utilizator și parolă a fost uitată utilizatorii pot accesa pagina parola uitata. După completarea formularului din fig 6.31 se va apăsa butonul Trimite. Datele introduse vor fi verificate, iar în cazul în care acestea există în sistem se va trimite un mesaj cu utilizatorul și parolă, la adresa de email configurată în sistem. În caz contrar, veți fi anunțați că nu există nici o înregistrare cu datele completate.
Pagina de contact este realizată în mod asemănător cu cea pentru parolă uitată, excepție făcând faptul că în loc de mesaj se poate trimite o serie de întrebări. Răspunsul la întrebări va fi primit pe adresa de email completată în formular.
Odată logat în aplicație utilizatorul este redirecționat către o pagină în care sunt afișate toate consultațiile făcute.
Consultațille vor fi afișate câte 5 pe pagină. Identificarea consultațiilor se va face în funcție de cei doi parametri folosiți la logare: CNP și nume.prenume.
Baza de date accesată de aplicația web colectează datele consultațiilor din toate cabinetele medicale ce aparțin sistemului, pentru a le pune atât la dispoziția pacienților, online, cât și la dispoziția doctorilor, prin aplicația locală.
Fig. 6.32 Vizualizarea consultațiilor utilizatorului logat
Consultațiile utilizatorului pot fi exportate într-un fișier csv prin apăsarea butonului Exporta.
Căutarea consultațiilor se poate face doar în funcție de dată (se va completa câmpul cautare cu data dorită, după care se va apăsa butonul cauta).
Dacă se dorește afișarea unei consultații se apasă butonul Afiseaza din dreptul consultației. Astfel vor putea fi vizualizate toate informațiile dorite (CNP, nume, prenume, data consultației, ora consultației, numele și prenumele doctorului ce a realizat consultația, tipul de consultație, diagnosticul pus, rețeta/tratamentul primit, precum și observațiile din timpul consultației).
• Concluzii și planuri de viitor
Un astfel de sistem de monitorizare și stocare a informațiilor medicale ar putea aduce foarte multe beneficii atât doctorilor cât și pacienților. Prin cunoașterea istoricului medical al unui pacient se vor putea da diagnostice și tratamente mult mai exacte și mult mai rapid. Totodată se vor evita multiplele greșeli din sistemul medical ce apar în momentul în care doctorul nu cunoaște sau nu este informat despre detaliile unor consultații anterioare, în care au fost trasate niște observații critice precum:
• Alergii pe care pacientul le-a manifestat în cazul tratamentului cu diferite medicamente. Astfel se vor putea exclude încă de la început acele medicamente ce nu sunt recomandate în cazul pacientului respectiv.
• Boli anterioare ce au fost descoperite și nu au fost tratate ca atare. Prin cunoașterea acestui detaliu se va putea reveni la un diagnostic anterior și se va putea da un tratament corespunzător care să ajute atât pacientul cât și doctorul în viitoarele consultații. Totodată se va putea studia mult mai in detaliu dacă problemele anterioare ale pacientului au vreo legătură cu problemele actuale. Practic se va încerca analizarea tuturor posibilităților înainte de punerea unui diagnostic și oferirea unui tratament.
• Simptome ce au fost descoperite în cadrul altor consultații. Prin intermediul sistemului se vor putea cunoaște toate observațiile și simptomele ce au fost manifestate sau comunicate doctorilor în cadrul unor consultații anterioare, chiar dacă acestea au fost realizate în alte cabinete medicale. Pe baza acestui raport se va putea ajunge mult mai ușor și mult mai rapid la un posibil diagnostic.
• Tratamente pe care pacientul le are de urmat. Astfel se va putea evita întreruperea sau influențarea altui tratament pe care acesta îl urmează în prezent.
• Rezultate ale unor analize anterioare. Se vor putea face comparații între rezultatele anterioare și cele actuale. Practic se va putea observa dacă tratamentul actual are sau nu efect.
Prin urmare acest sistem va permite și va crea posibilitatea unui schimb de păreri și a unei comunicări indirecte între doctori din diferite cabinete medicale.
Un beneficiu al acestui sistem îl reprezintă faptul că în cazul în care comunicarea cu serverul central este pierdută datele nu vor fi pierdute ci vor fi salvate doar la nivel local, de cabinet. În momentul în care aceasta va fi restabilită informațiile cu privire la consultațiile realizate vor putea fi transferate în baza de date centrală.
Sistemul pune la dispoziția pacienților o aplicație web prin care aceștia își vor putea vizualiza întreg istoricul medical. Toate aceste informații sunt private, putând fi accesate pe baza unui nume de utilizator și a unei parole.
Ca plan de viitor aș dori dezvoltarea unui sistem de programări online în cadrul aplicației web. Pacienții își vor putea alege online cabinetul, data și ora la care doresc să se consulte. Aceste informații vor fi verificate la nivel de cabinet și se va primi automat un răspuns dacă se poate face sau nu o programare la acel cabinet în acea perioadă. În cazul în care perioada este validă programarea va fi introdusă automat în baza de date locală a cabinetului respectiv. Astfel se va putea reduce cât mai mult timpul pierdut în cazul unei programări telefonice, precum și diversele neclarități ce pot apărea.
Pentru a mări popularitatea sistemului se va realiza o aplicație pentru telefonul mobil care să permită vizualizarea datelor medicale oriunde și oricând, fiind necesară doar o simplă conexiune la internet.
Bibliografie
• Platforma de e-learning si curricula e-content pentru invatamantul superior tehnic, Baze de date distribuite, http://andrei.clubcisco.ro/cursuri/, accesat la data de 11.01.2014
• Proiectarea bazelor de date distribuite, Cristina Ionita, Petrisor Oprea, Catedra de informatica industrial, ASE Bucuresti, 1998
• Metaresurse in sisteme distribuite – Referat Doctorat, Alboaie Lenuta, 2004
• Ingineria Programarii, Ovidiu Gheorghies, Adriana Gheorghies
• http://www.ejbi.org, accesat la data de 12.01.2014
• http://www.scritube.com/stiinta/informatica/Arhitecturi-logice-de-retele-d92414.php, accesat la data de 12.01.2014
• Curs practiv de Java, Cristian Frăsinaru
Bibliografie
• Platforma de e-learning si curricula e-content pentru invatamantul superior tehnic, Baze de date distribuite, http://andrei.clubcisco.ro/cursuri/, accesat la data de 11.01.2014
• Proiectarea bazelor de date distribuite, Cristina Ionita, Petrisor Oprea, Catedra de informatica industrial, ASE Bucuresti, 1998
• Metaresurse in sisteme distribuite – Referat Doctorat, Alboaie Lenuta, 2004
• Ingineria Programarii, Ovidiu Gheorghies, Adriana Gheorghies
• http://www.ejbi.org, accesat la data de 12.01.2014
• http://www.scritube.com/stiinta/informatica/Arhitecturi-logice-de-retele-d92414.php, accesat la data de 12.01.2014
• Curs practiv de Java, Cristian Frăsinaru
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Caracteristici, Particularitati, Implementari Si Tendinte Actuale ale Sistemelor Distribuite Eterogene (ID: 111174)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
