Tema de Casă 1

Implementarea modulelor de gestiune a resurselor umane, financiar-contabil şi logistică pentru un sistem informatic din cadrul unui lanț de policlinici

Lansare: 03 noiembrie 2014, 23:55
Termen de Predare: 02 decembrie 2014, 23:55
Pondere: 18 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 aceastei etape, se va realiza o aplicaţie desktop cu interfaţă grafică care va interacţiona cu un sistem de gestiune pentru baze de date, oferind funcţionalităţi utilizatorilor corespunzător cu drepturile pe care aceştia le deţin în sistem, descrise prin intermediul unor roluri.

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 din cadrul acesteia prin intermediul unei aplicaţii;
  • dezvolte un sistem de control al drepturilor de acces al utilizatorilor în cadrul sistemului informatic pe baza rolurilor (RBAC – role-based access control);
  • realizeze o interfaţă grafică pentru a facilita interacţiunea utilizatorului cu aplicaţia, procesând evenimentele pe care acesta le generează.

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;
  • dezvoltarea de interfeţe grafice utilizând JavaFX.

Enunț

Se doreşte implementarea unui sistem informatic destinat gestiunii activităţilor dintr-un lanț de policlinici.

Lanțul de policlinici este format din mai multe unități medicale, fiecare fiind caracterizată prin denumire, adresă, descrierea serviciilor oferite și programul de funcționare, pentru fiecare zi a săptămânii.

Aplicaţia va trebui să utilizeze un sistem de gestiune pentru baze de date MySQL, iar interacţiunea cu acesta va fi realizată doar prin interfaţa grafică (dezvoltată în JavaFX). Funcţionalităţile pe care le va oferi programul vizează operaţii ce ţin de gestiunea angajaţilor, serviciul financiar-contabil şi administrarea operațiilor curente din cadrul policilinicii (gestiunea pacienților programați, completarea unui raport medical, emiterea unui bon fiscal).

Aceste componente reprezintă modulele HRM / HCM (Human Resources / Capital Management), financiar şi logistic, părţi integrante ale oricărui sistem ERP.

Aplicaţia va putea fi accesată, pe baza unui proces de autentificare, de către mai multe tipuri de utilizatori, operând în departamentele resurse umane, financiar-contabil sau medical. Pentru fiecare tip de utilizator se vor reţine informații precum CNP, nume, prenume, adresa, număr de telefon, email, cont IBAN, numărul de contract, data angajării, funcţia deţinută în cadrul lanțului de policlinici. Fiecare utilizator își va putea vizualiza datele personale imediat după ce va accesa sistemul informatic, fără a avea însă posibilitatea de a le modifica. Totodată, programul trebuie să ofere și o funcționalitate pentru deautentificare, prin care se revine la fereastra care solicită datele de acces, astfel încât și un alt utilizator să îl poată folosi ulterior, fără a fi necesară repornirea sa.

Utilizatorul de tip administrator poate adăuga, modifica şi şterge informaţii în baza de date legate de utilizatori. De asemenea, va exista şi un rol de super-administrator care poate opera inclusiv asupra utilizatorilor de tip administrator.

Pentru un utilizator de tip angajat se va reține salariul negociat și numărul de ore care trebuie realizat în fiecare lună. Funcțiile ce pot fi deținute în cadrul lanțului de policlinici sunt inspector resurse umane, expert financiar-contabil, recepționer, asistent medical și medic, corespunzătoare departamentelor de resurse umane, economic, respectiv medical.

Pentru un asistent medical se va reține suplimentar tipul și gradul.

Tipul unui asistent medical poate fi: generalist, laborator, radiologie.
Gradul unui asistent medical poate fi secundar, principal.

Pentru un medic se va reține suplimentar specialitatea sau specialitățile în care își desfășoară activitatea, gradul, codul de parafă, competențele pe care le deține pentru realizarea unor proceduri ce necesită acreditări speciale, titlul științific, postul didactic. Totodată, fiecare medic are negociat un procent din serviciile medicale realizate care îi revine, adiţional față de salariul negociat.

Gradul unui medic poate fi specialist, primar.
Astfel de proceduri pot fi ecografie, endoscopie digestivă, ecocardiografie, cardiologie intervențională, bronhoscopie, EEG, EMG, dializă, chirurgie laparoscopică, chirurgie toracică, chirurgie spinală, chirurgie spinală, litotriție extracorporeală, explorare computer tomograf / imagistică prin rezonanță magnetică și altele.
Nu este obligatoriu ca un medic să dețină un titlu științific. În cazul în care medicul deține un astfel de titlu, acesta poate fi: doctorand sau doctor în științe medicale.
Nu este obligatoriu ca un meic să dețină un post didactic. În cazul în care medicul deține un astfel de post, acesta poate fi: preparator, asistent, șef de lucrări (lector), conferențiar, profesor.

Lanțul de policlinici oferă pacienților un set de servicii medicale. O parte dintre acestea sunt disponibile pentru toate specialitățile (consultație, distinctă în funcție de gradul medicului care o realizează: specialist, primar, profesor / conferențiar), altele sunt specifice pentru fiecare specialitate în parte. Pentru un serviciu medical disponibil se va specifica specialitatea din care face parte, necesitatea existenței unei competențe a medicului care o efectuează, prețul asociat și durata (exprimată în minute).

Sistemul ERP va fi format din mai multe module care vor putea fi accesate de angajaţi în funcţie de drepturile pe care le deţin. Astfel, vor fi implementate un modul pentru gestiunea resurselor umane ce vizează gestiunea programului de lucru şi al concediilor angajaţilor, un modul pentru operaţii financiar-contabile care determină profitul operaţional ca diferenţă între venituri (sume încasate pentru serviciile medicale) şi cheltuieli (plăţi efectuate către angajaţi aferente salariilor) și un modul pentru gestiunea activităților operaționale (programarea pacienților pentru servicii medicale și înregistrarea acestora în momentul în care se prezintă în clinica medicală, emiterea bonului fiscal de către recepționeri, completarea rapoartelor medicale de către asistenții medicali și medici).

Toate aceste module vor fi integrate în cadrul aceluiași sistem informatic, sub forma unor meniuri care vor conține funcționalitățile pe care acestea le oferă, disponibilitatea lor fiind însă limitată și de permisiunile pe care le posedă utilizatorul autentificat la momentul respectiv de timp.

Drepturile de acces ale angajaţilor din diferite departamente la modulele sistemului ERP sunt descrise în tabelul de mai jos:

departament / tip angajat
modul
resurse umane economic medical
recepționer asistent medical medic
gestiunea resurselor umane
doar date referitoare la propria persoană

doar date referitoare la propria persoană

doar date referitoare la propria persoană

doar date referitoare la propria persoană
operaţii financiar-contabile
doar date referitoare la propria persoană

doar date referitoare la propria persoană

doar date referitoare la propria persoană

doar date referitoare la propria persoană + profitul propriu
gestiunea activităților operaționale
doar submodulele programare, înregistrare pacient, emitere bon fiscal

doar submodulul raport medical analize

doar submodulele istoric și raport medical
Legendă
utilizatorul are drepturi de citire și de scriere
utilizatorul are doar drepturi de citire / limitate la anumite funcționalități
utilizatorul nu are nici un fel de drepturi

Prin intermediul modulului pentru gestiunea resurselor umane, un inspector poate căuta un angajat (de orice tip), în funcție de parametrii pe care îi indică: nume, prenume, funcție. Pentru fiecare angajat se va specifica un orar de lucru, acesta putând fi generic (același pentru o anumită zi a săptămânii) sau specific (pentru o anumită dată calendaristică). Orarul este caracterizat prin ziua la care se referă (zi a săptămânii sau dată calendaristică), intervalul orar (momentul de început și momentul de sfârșit), locația (unitatea medicală) în care se desfășoară. De asemenea, pentru fiecare angajat se poate specifica o perioadă de concediu, răstimp în care nu poate furniza servicii medicale.

În situația în care pentru un angajat este specificat și un orar generic și unul specific, orarul specific are prioritate în fața orarului generic, fiind considerat o excepție de la regulă.

Angajații de tip inspector resurse umane și expert financiar contabil au la dispoziție o secțiune în care pot consulta orarul săptămânal și informații despre concediile efectuate.

Angajații de tip recepționer, asistent medical și medic pot vizualiza informațiile furnizate de modulul pentru gestunea resurselor umane doar în ceea ce privește propria persoană (orarul pentru luna în curs, pentru fiecare zi indicându-se intervalul orar și locația, tratând și situațiile în care nu există nici un program de lucru specificat sau angajatul se află în concediu). Ei nu vor avea posibilitatea de a modifica în nici un fel aceste informații.

În cadrul modulului de operaţii financiar contabile, un expert poate vizualiza informații cu privire la profitul realizat de lanțul de policlinici, pentru lunile precedente în care s-au înregistrat activități. Profitul este definit ca diferență între venituri și cheltuieli. Veniturile sunt obținute pentru plățile realizate de pacienți în urma furnizării de servicii medicale, iar cheltuielile sunt determinate în funcție de salarii (inclusiv comisioanele medicilor). În cazul salariilor, acestea se consideră ponderate cu numărul de ore realizat în luna respectivă, raportat la numărul de ore specificat în contractul de muncă pentru fiecare angajat în parte. De asemenea, vor fi disponibile rapoarte cu privire la profitul realizat de fiecare medic în parte, pe fiecare locație (unitate medicală) sau pe fiecare specialitate.

La calcularea profitului pentru fiecare specialitate, vor fi luate în considerare doar veniturile pentru serviciile medicale furnizate de specialitatea respectivă, respectiv cheltuielile cu salariile și comisioanele medicilor care le-au realizat.

Orice angajat poate vizualiza salariile obținute în lunile precedente. În plus, un medic poate consulta profitul pe care l-a generat, calculat ca diferență dintre sumele încasate de către lanțul de policlinici de la pacienți pentru serviciile furnizate și sumele reprezentând salariul și comisioanele sale.

În cadrul modulului pentru gestiunea activităților operaționale un recepționer poate realiza o programare pentru un pacient. O programare se face doar pentru o dată calendaristică ulterioară, la un anumit moment de timp și pentru un medic, fiind specificate unul sau mai multe servicii medicale care urmează a fi furnizate (pentru fiecare medic în parte se vor putea selecta doar acele servicii medicale corespunzătoare specialității sau specialităților sale, pentru care deține competențele necesare), durata consultației fiind calculată ca sumă a timpului alocat pentru fiecare procedură în parte. Pentru ziua curentă, un recepționer poate înregistra un pacient în momentul în care acesta se prezintă în clinică. Totodată, recepționerul emite un bon fiscal ulterior consultației, cuprinzând fiecare serviciu medical care a fost efectuat.

Un asistent medical poate completa informații în rapoartele pentru analizele medicale corespunzătoare pacienților care au fost înregistrați pentru acestea. Rezultatul furnizat poate fi o valoare numerică (raportată la un interval de referință), respectiv o valoare binară de tipul pozitiv / negativ. Un raport pentru analize medicale va fi validat, ulterior nemaiputând fi modificat, fiind însă disponibil pentru consultare în cadrul istoricului pacientului.

Un medic poate vizualiza pacienții programați la el pentru ziua calendaristică în curs, listă în care sunt evidențiați cei care au fost înregistrați. De asemenea, pentru un astfel de pacient poate fi consultat întregul istoric, compus din rapoarte medicale anterioare. Pentru fiecare pacient consultat, medicul va completa un raport medical, care va conține, în mod obligatoriu, informații administrative: numele și prenumele pacientului, numele și prenumele medicului care a realizat consultația, numele și prenumele medicului care a recomandat consultația (opțional), numele și prenumele asistentului medical (opțional), data consultației, precum și următoarele secțiuni medicale: istoric, simptome, investigații, diagnostic, recomandări. Secțiunea de investigații va cuprinde subsecțiuni pentru fiecare serviciu medical furnizat, medicul având posibilitatea de a completa rezultatul obținut. Medicul va putea gestiona și lista serviciilor medicale (adăugare, ștergere), în funcție de necesitatea / inoportunitatea realizării anumitor proceduri. În momentul în care un raport medical este complet, acesta este parafat, astfel că ulterior nu mai este posibilă modificarea sa, acesta putând fi vizualizat în cadrul istoricului pacientului.

Precizări suplimentare

Nu este permină folosirea altor tehnologii decât a celor specificate în cadrul enunţului.

Fiecare fereastră a interfeței grafice va fi definită în cadrul unui fișier FXML generat folosind Scene Builder 2.0.

Popularea bazei de date cu informații trebuie să fie corespunzătoare pentru a putea ilustra funcționalitățile implementate. Fișierele care conțin exemple pentru entitățile din cadrul tabelelor au rolul de a facilita procesul de documentare, însă pot să nu fie luate în considerare la implementarea propriu-zisă.

Tipul de orar generic este posibil pentru toți angajații. Tipul de orar specific se aplică numai pentru angajații din cadrul departamentului medical. De asemenea, numai pentru acest tip de angajați programul de lucru va include informații cu privire la locație (unitate medicală).

Se va verifica faptul că orarul unui medic se încadrează în programul de funcționare al locației (unității medicale) în care va oferi consultații. De asemenea, intervalul orar corespunzător programării unui pacient (momentul de timp la care este realizată programarea împreună cu durata consultației) nu trebuie să se suprapună peste nici o altă programare (atât a medicului, cât și a pacientului).

Un medic poate oferi consultații în mai multe locații (unități medicale) din cadrul lanțului de policlinici, cu condiția ca orarele aferente acestora să fie disjuncte.

Nu se vor lua în considerare constrângeri cu privire la numărul de zile de concediu realizate în cadrul unui an calendaristic sau referitoare la tipul de concediu.

Pentru calculul salariului, se va considera că angajatul a fost prezent conform programului său de lucru. Zilele în care acesta s-a aflat în concediu nu vor fi remunerate. Astfel, vor fi procesate doar datele în care acesta are definit un orar și nu s-a aflat în concediu.

Tipul de consultație va fi facturat automat în funcție de gradul medicului ce o realizează (medic specialist, primar, profesor / conferențiar).

În situația în care un medic are mai multe specialități, trebuie avut în vedere faptul că gradul acestuia poate fi diferit pentru fiecare specialitate în parte. De asemenea, o programare poate conține doar servicii medicale corespunzătoare unei singure specialități (recepționerul poate realiza programarea pentru una din specialitățile disponibile, la alegere). Nu se vor defini însă programe de lucru diferite pentru fiecare specialitate în parte.

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
3 p proiectarea tabelelor în baza de date
● 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%
3 p realizarea interfeţei grafice1)
● aspect: 40%
● uşurinţă în utilizare: 60%
1 p gestiunea utilizatorilor
● autentificare, deautentificare: 20%
● operaţii utilizator de tip administrator / super-administrator: 50%
● implementare sistem de control al drepturilor de acces al utilizatorilor în cadrul sistemului informatic pe baza rolurilor: 30%
2,50 p funcţionalităţi modul pentru gestiunea resurselor umane
● căutare utilizator: 10%
● specificare informații referitoare la programul de lucru: 45%
● specificare informații cu privire la concedii: 20%
● vizualizarea informațiilor despre orar, pentru fiecare angajat în parte: 25%
2,50 p funcţionalităţi modul de operaţii financiar contabile
● vizualizarea profitului, defalcat pe venituri și cheltuieli: 30%
● vizualizarea profitului, pentru un anumit medic, locație sau specialitate medicală: 55%
● vizualizare salariilor, pentru fiecare angajat în parte: 15%
4,50 p funcţionalităţi modul pentru gestiunea activităților operaționale
● funcționalități recepționer: 35%
o programare pacient: 20%
o înregistrare pacient: 10%
o emitere bon fiscal: 5%
● funcționalități asistent medical: 20%
o vizualizare pacienți programați / înregistrați: 5%
o gestiune raport medical (completare rezultate, validare): 15%
● funcționalități medic: 45%
o vizualizare pacienți programați / înregistrați: 5%
o vizualizare istoric: 10%
o gestiune raport medical (specificare secțiuni, completare informații, parafare): 30%
1 p modularizare
● structura aplicaţiei: 50%
● lizibilitatea codului: 20%
● comentarii, README: 30%
0,50 p validarea datelor
● asigurarea consistenţei informaţiilor reţinute în tabele: 50%
● mesaje de eroare: 50%

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

  • 0,50 p – predarea şi prezentarea temei cu o săptămână mai devreme (înainte de 26.11.2014, 23:55);
  • 0,75 p – elaborarea unui algoritm de repartizare a medicilor pe cabinetele medicale dintr-o locație (unitate medicală); pentru fiecare locație (unitate medicală) se va defini un număr de cabinete medicale, iar pentru fiecare cabinet medical se va reține (opțional) o listă de servicii medicale care pot fi realizate la locația respectivă (suplimentar, serviciile medicale vor implementa o constrângere legată de existența unui echipament într-un cabinet medical); recepționerul va vizualiza lista de alocări generate exclusiv pentru data calendaristică curentă, în funcție de programările existente; pentru acele cabinete medicale care nu specifică nici un serviciu medical, se condieră că pot fi asociate oricărui tip de consultație care nu implică un tip de echipament;
  • 0,25 p – calcularea salariului unui medic luând în considerare nu programul, ci consultațiile / serviciile medicale propriu-zise (pentru care au existat programări la care au fost emise bonuri fiscale);
  • 0,50 p – posibilitatea de personalizare a serviciilor medicale pentru un medic (aceleași servicii medicale pot să aibă un alt preț și o altă durată atunci când sunt realizate de un anumit medic); astfel de servicii medicale personalizate vor fi precizate de către inspectorul de resurse umane.

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ă sau un rezultat nesatisfăcător al prezentării (necunoașterea funcționalității aplicației / codului sursă, imposibilitatea de a răspunde la întrebări) atrag după sine anularea punctajului corespunzător 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 modul de implementare al acestora.

Tema va trebui încărcată pe site-ul cs.curs.pub.ro sub forma unei arhive de tip .zip (având denumirea Grupa34XCX_NumePrenume_Tema1.zip) care să conţină script-ul pentru crearea şi popularea tabelelor din baza de date (numele bazei de date fiind Grupa34XCX_NumePrenume) – în rădăcina, sursele aplicaţiei (proiect Eclipse / NetBeans) precum şi un README în care să explicaţi funcționalitățile dezvoltate, problemele întâlnite și modul de soluționare a acestora. Temele care nu respectă convențiile de nume indicate nu vor fi luate în considerare. Prezentarea se poate face numai după ce tema a fost încărcată pe site.

Î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

aipi2014-tema01.pdf

users.zip (actualizat 16.11.2014, 14:00)

medical_services.zip (actualizat 16.11.2014, 14:00)

1)
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.
teme/tema_de_casa_1.txt · Last modified: 2014/11/16 14:03 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