Tema de Casă 3

Implementarea modulului de relaţii cu clienţii pentru un sistem informatic din cadrul unui lanț de policlinici

Lansare: 16 decembrie 2014, 23:55
Termen de Predare: 13 ianuarie 2014, 23:55
Pondere: 13 p / 40

Obiective

Obiectivul temelor de casă este reprezentat de implementarea unui sistem informatic performant şi scalabil pentru gestiunea resurselor unei întreprinderi de dimensiuni mari. În acest an universitar, organizaţia pentru care se va proiecta şi dezvolta acest pachet de programe este un lanț de policlinici.

Se va realiza implementarea graduală a mai multor module din cadrul aplicației ERP, pe parcursul a patru etape. În cadrul acestei etape se va dezvolta o aplicaţie web cu conţinut dinamic care poată fi accesată prin intermediul unui client universal, browser-ul, fără a mai fi nevoie de alte resurse pentru rularea sa.

După rezolvarea temei de casă, studentul va fi capabil să:

  • proiecteze o bază de date cu mai multe tabele normalizate, între care există relaţii de dependenţă, gestionând informaţiile reţinute prin intermediul unui sistem informatic;
  • dezvolte un sistem de control al drepturilor deţiunute de utilizatori în cadrul aplicaţiei pe baza rolurilor (RBAC – role-based access control);
  • realizeze o aplicaţie web (formată din mai multe pagini, între care există legături) care implementează o funcţionalitate complexă, având rolul de interfaţă între utilizator şi baza de date.

Cunoştinţele necesare pentru rezolvarea temei de casă sunt:

  • programarea în limbajul Java;
  • manipularea bazelor de date folosind MySQL;
  • folosirea API-ului Java DataBase Connectivity;
  • folosirea tehnologiilor Java Servlets / JavaServer Pages pentru dezvoltarea unei aplicaţii web.

Enunț

Se doreşte proiectarea şi dezvoltarea unei aplicaţii web care va implementa modulele de relaţii cu clienţii folosind tehnologiile Java Servlets / JavaServer Pages. Aceasta va rula în contextul unui server web Apache Tomcat.

Aceste componente reprezintă modulul CRM (Customer Relationship Management), parte integrantă a oricărui sistem ERP.

Un astfel de modul al sistemului informatic e destinat pacienților lanțului de policlinici care doresc să vizualizeze serviciile medicale pe care acestea le pun la dispoziție, având totodată posibilitatea de a realiza programări pentru diferite consultații și de a avea acces la întregul istoric medical format din rapoartele medicale și din rezultatele investigațiilor efectuate anterior.

Accesul în cadrul aplicației web se va face securizat pe baza autentificării prealabile.

În situația în care nici un utilizator nu este autentificat, în pagina principală vor fi afișate informații generale cu privire la lanțul de policlinici, existând legături către următoarele secțiuni:

  1. lista de locații în care lanțul de policlinici își desfășoară activitatea;
    Pentru fiecare locație în parte vor putea fi vizualizate:
    1. o descriere a locației respective (cum ar fi adresa, telefonul, adresa de email, programul de lucru);
    2. lista medicilor care oferă servicii medicale la locația respectivă;
    3. lista specialităților medicale pentru care pot fi realizate programări în cadrul clinicii de la locația respectivă; pentru fiecare specialitate medicală vor putea fi consultate serviciile medicale aferente și medicii care le oferă.
  2. catalogul de servicii medicale pe care le oferă lanțul de policlinici;
    Utilizatorul va putea filtra lista de servicii medicale în funcție de specialitatea din care fac parte.
    Pentru fiecare serviciu medical va putea fi vizualizat:
    1. denumirea;
    2. timpul necesar pentru execuția sa;
    3. prețul.
  3. echipa medicală conține toți medicii care oferă consultații și realizează investigații în cadrul lanțului de policlinici;
    Pentru fiecare medic va putea fi vizualizat:
    1. programul de lucru pe următoarele 4 săptămâni (obținut prin suprapunerea programului de lucru săptămânal cu cel specific, luându-se în considerare și concediile);
    2. lista serviciilor medicale pe care le poate oferi (corespunzătoare abilităților pe care le deține), împreună cu timpul necesar pentru execuție și prețul;
    3. comentariile pe care le-au transmis pacienții care au beneficiat de serviciile sale precum și evaluarea generală a acestuia, exprimată sub forma unei valori cuprinse între 1 și 5, cu 2 zecimale exacte.
Comentariile transmise de pacienți vor fi afișate în ordine invers cronologică (de la cele mai noi spre cele mai vechi). Pentru fiecare comentariu se va afișa și data la care a fost realizată consultația asociată.
Aceasta este calculată ca medie aritmetică ale aprecierilor transmise de pacienți. În cazul în care pentru un medic nu au fost completate calificative, se va afișa valoarea N/A.

Pe lângă aceste informații, un pacient care s-a autentificat în prealabil poate accesa și alte secțiuni:

  1. o secțiune pentru realizarea unei programări;
    Pentru fiecare programare trebuie specificate: locația unde va fi realizată, medicul care va realiza consultația, serviciile medicale care sunt solicitate, o dată calendaristică și ora preferată.
    În situația în care programarea poate fi realizată, se va afișa costul total al investigațiilor medicale solicitate precum și durata totală a vizitei în policlinică, pacientul fiind invitat să confirme / să infirme faptul că dorește să își mențină solicitarea pentru programarea respectivă.
    În situația în care nu poate fi realizată programarea cu parametrii menționați trebuie afișat un mesaj de eroare care justifică refuzul de a satisface solicitare.
    O programare trebuie să fie validată de un recepționer.
    Pacientul are posibilitatea de a anula o programare care nu a fost validată încă de către recepționer.
    În lista cu solicitările de programări vor fi afișate atât cele validate de recepționer (dar pentru care nu s-a completat un raport medical) cât și cele aflate în așteptare.
  2. o secțiune pentru consultarea istoricului medical;
    Acesta este ordonat invers cronologic în funcție de data la care au fost realizate investigațiile respective (de la cele mai noi la cele mai vechi), putând fi filtrat în funcție de specialitatea din care fac parte acestea, precum și în funcție de o anumită perioadă de timp specificată printr-o dată calendaristică de început și de sfârșit.
    Acesta este ordonat invers cronologic în funcție de data la care au fost realizate investigațiile respective (de la cele mai noi la cele mai vechi), putând fi filtrat în funcție de specialitatea din care fac parte acestea, precum și în funcție de o anumită perioadă de timp specificată printr-o dată calendaristică de început și de sfârșit.
    De asemenea, se poate opta pentru a se vizualiza numai rapoartele medicale / rezultatele analizelor medicale.
    Istoricul medical este format din:
    1. rapoarte medicale corespunzătoare consultațiilor / investigațiilor medicale care au fost realizate de medici pentru pacient;
    2. rezultate ale analizelor medicale completate de asistenții medicali.

Pentru fiecare element al istoricului medical pot fi consultate detalii:

  • pentru rapoarte medicale – medicul care a realizat investigația, asistentul medical care a participat (opțional), medicul care a recomandat-o, data la care a fost realizată, istoric, simptome, diagnostic, recomandări și o descriere pentru fiecare serviciu medical;
  • pentru analize medicale – rezultatele obținute.

Pentru fiecare element al istoricului medical, pacientul poate completa un formular prin care va specifica gradul de satisfacție cu privire la nivelul serviciilor medicale oferite. În acest sens, el va specifica un comentariu prin care descrie experiența sa și un calificativ. Odată completate aceste informații, ele nu mai pot fi modificate.

Calificativul este un întreg cuprins între 1 (nemulțumire) și 5 (mulțumire).

Un recepționer va verifica solicitările transmise de pacienți pentru realizarea unor programări. Acestea pot fi validate sau invalidate în mod discreționar (fără a ține cont de restricțiile impuse de disponibilitatea medicului pentru data calendaristică și intervalul de timp precizate).

Astfel de verificări vor fi realizate în momentul în care pacientul transmite solicitarea pentru realizarea unei programări, generându-se un mesaj de eroare în funcție de disponibilitatea medicului pentru ziua și ora respectivă / suprapunerea cu programări ale altor pacienți.

Precizări suplimentare

Pentru determinarea listei specialităților medicale pentru care pot fi realizate programări în cadrul unei clinici de la o anumită locației, vor fi luate în considerare specialitățile medicilor care au program de lucru în cadrul acesteia.

În elaborarea catalogului de servicii medicale, inițial se vor afișa serviciile medicale pentru toate specialitățile, existând posibilitatea de a se alege dintr-o listă (populată cu toate specialitățile medicale) specialitatea pentru care se dorește a se realiza operația de filtrare.

Pentru realizarea cerinţelor, poate fi necesară adaptarea bazei de date proiectată în cadrul etapelor anterioare. Este necesar să se parcurgă enunțurile aferente acestora pentru determinarea atributelor diferitelor entități pentru care trebuie proiectate tabele.

Vizualizarea programului de lucru al medicilor se face defalcat pe zile ale săptămânii și pe săptămăni (tabele care au ca linii săptămâni și drept coloane zile ale săptămânii). Trebuie luate în considerare săptămăni întregi, începând cu săptămâna ulterioară celei din care face parte data calendaristică curentă. Fiecare interval orar va fi însoțit de locația din cadrul lanțului de policlinici la care medicul oferă serviciile medicale respective.

Alternativ, se poate afișa programul de lucru pentru fiecare locație în parte.

Interfața pentru programare trebuie să conțină liste cuprinzând lista locațiilor, specialităților, medicilor și a serviciilor medicale, populate corespunzător în funcție de selecțiile realizate (în cazul în care nu sunt făcute nici un fel de selecții acestea cuprind toate valorile posibile). Pentru implementarea unei astfel de funcționalități se va folosi Java Script.

Erorile care pot fi furnizate în cazul în care nu poate fi realizată o programare sunt:

  • INVALID_DATE – medicul nu are program în ziua calendaristică / săptămânală respectivă;
  • INVALID_TIME_SLOT – medicul nu are program în intervalul orar specificat;
  • PHYSICIAN_ON_LEAVE – medicul are program în ziua săptămânală / intervalul orar specificat, însă se află în concediu la data solicitată;
  • OVERLAPPING_APPOINTMENT – programarea se suprapune peste o altă programare (validată anterior) a unui alt pacient;

Odată schimbată starea unei solicitări pentru o programare realizată de către un recepționer, aceasta nu mai poate fi modificată.

Orice specificaţie care nu este menţionată mai sus reprezintă decizie de implementare. Puteţi considera orice simplificare în condiţiile în care enunţul nu precizează altfel.

Barem de corectare și notare

PUNCTAJ CRITERII DE ACORDARE
1 p reproiectarea bazei de date astfel încât să corespundă noilor funcţionalităţi
♦ conformitatea structurii conceptuale a bazei de date cu o formă normală: 40%
♦ definirea de chei primare, chei străine (legături între toate tabelele bazei de date), constrângeri de integritate pentru formatul atributelor: 25%
♦ populare corespunzătoare: 35%
1 p realizarea interfeţei grafice
♦ aspect: 30%
♦ uşurinţă în utilizare: 70%
Punctajul pentru realizarea interfeţei grafice se acordă doar în condiţiile implementării a minimum 50% din funcţionalităţi, altfel va fi ponderat cu procentul de rezolvare aferent.
5 p implementarea paginilor aplicației web corespunzătoare utilizatorului neautentificat
♦ lista de locații: 30%
✔ descriere: 5%
✔ listă medici: 10%
✔ listă specialități / detalii (servicii medicale, medici): 15%
♦ catalogul de servicii medicale: 20%
✔ descrierea serviciului medical (denumire, timp de execușie, preț): 10%
✔ filtrare în funcție de specialitate: 10%
♦ echipa medicală: 50%
✔ programul de lucru: 20%
✔ servicii medicale: 20%
✔ comentarii / calcul evaluare generală: 10%
4 p implementarea paginilor aplicației web corespunzătoare tipului de utilizator pacient: 35%
♦ solicitare programare (inclusiv anulare): 65%
♦ consultare istoric medical
✔ rapoarte medicale / rezultate analize (cu detalii) + filtrare: 75%
✔ formular de satisfacție: 25%
0,50 p implementarea funcţionalităţi specifice tipului de utilizator recepționer
♦ vizualizare solicitări pentru programări: 75%
♦ validare / invalidare solicitare: 25%
0,50 p alte aspecte funcționale
♦ autentificare, deautentificare: 55%
♦ generarea unor mesaje de eroare în situația în care se produc erori: 45%
1 p modularizare
♦ structura aplicaţiei: 50%
♦ lizibilitatea codului: 20%
♦ comentarii, README: 30%

BONUS. Se pot obţine punctaje suplimentare, astfel:

  • 0,25p – predarea şi prezentarea temei până la 06.01.2015, ora 23:55;
  • 0,50p – popularea unei liste cu datele calendaristice și intervalele orare (din decursul următoarelor 4 săptămâni) în care există disponibilitatea unui medic pentru o listă de servicii medicale solicitate (verificându-se faptul că este definit un orar, că medicul nu se află în concediu și nu există alte programări pentru perioada de timp respectivă);
  • 0,25p – definirea unor intervale de referință pentru analizele medicale (valori normale asociate analizelor medicale respective), evidențiindu-se în cadrul istoricului medical rezultatele patologice;
  • 0,25p – ordonarea listei medicilor în funcție de calificativele pe care aceștia le-au primit de la pacienți, afișându-se valoarea corespunzătoare evaluării precum și numărul de voturi pe baza cărora a fost calculată;
  • 0,25p – accesarea aplicației web de către un analist financiar care poate vizualiza pacienții care au contractat cele mai costisitoare servicii medicale, cele mai solicitate specialități medicale și medicale (ca număr de programări pentru care au fost generate rapoarte medicale).

Condiții de realizare și predare

Tema va fi realizată individual şi va fi prezentată în cadrul laboratorului, până la sfârşitul semestrului. Neprezentarea temei de casă atrage după sine nepunctarea acesteia. În cadrul prezentării veţi specifica succint funcţionalităţile pe care le-aţi dezvoltat şi veţi răspunde la întrebări cu privire la diferite soluţii adoptate pentru rezolvarea problemelor întâlnite.

Tema va trebui încărcată pe site-ul http://cs.curs.pub.ro sub forma unei arhive de tip .zip (având denumirea Grupa34XCX_NumePrenume_Tema3.zip) care să conţină script-ul pentru crearea şi popularea tabelelor din baza de date (numele bazei de date fiind Grupa34XCX_NumePrenume), sursele aplicaţiei precum şi un fişier README în care să argumentați tehnologia pe care ați ales-o și deciziile de implementare. Prezentarea se poate face numai după ce tema a fost încărcată pe site. În cazul în care aplicaţia este găzduită online, veţi indica URL-ul de unde aceasta poate fi accesată.

Încărcarea pe site nu este redundantă, temele vor fi comparate prin aplicaţii specializate pentru a se depista eventualele fraude. În această situaţie, întreg punctajul pe parcursul semestrului va fi anulat, studenţii implicaţi (atât originalul, cât şi copia / copiile) fiind obligaţi să repete disciplina – cu taxă – în anul universitar următor.

Resurse

teme/tema_de_casa_3.txt · Last modified: 2014/12/08 13:40 by Andrei Roșu-Cojocaru
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0