Sunteți pe pagina 1din 17

Proiect APEX

SCARLAT SIMONA ILEANA

Page 1 of 17
1. Tema
Pentru realizarea aplicatiei APEX am ales sa utilizez date din domeniul medical.

2. Descrierea
In acest proiect am folosit patru tabele de baza pe care le-am populat corespunzator: MEDICI,
SPECIALIZARI, INVESTIGATII si PROGRAMARI.
2.1 Tabele de baza

Tabela SPECIALIZARI contine informatii privind categoriile de analize respectiv functiile


medicilor unui spital
Tabela INVESTIGATII contine informatii privind analizele ce se pot face la un laborator din
cadrul unui spital
Tabela MEDICI contine informatii cu privire la medicii unui spital.
Tabela PROGRAMARI contine informatii privind programarile unor pacieti la diversi medici.

Crearea si popularea tabelei SPECIALIZARI se regasesc in scripturile de mai jos:

CREATE TABLE SPECIALIZARI (ID_SPECIALIZARE NUMBER(5), NUME varchar2(50));


ALTER TABLE SPECIALIZARI ADD CONSTRAINT PK_ID_SPECIALIZARE PRIMARY KEY
(ID_SPECIALIZARE);

INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('1','Alergologie si imunologie');


INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('2','Anatomie patologica');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('3','Biochimie');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('4','Biologie moleculara');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('5','Citologie');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('6','Electroliti');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('7','Enzime');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('8','Genetica');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('9','Hematologie laborator');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('10','Markeri endocrini');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('11','Markeri tumorali');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('12','Markeri virali');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('13','Microbiologie');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('14','Serologie si boli infectioase');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('15','Teste de toxicologie’);
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('16','CHIRURGIE GENERALA');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('17','ORTOPEDIE SI
TRAUMATOLOGIE');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('18','PNEUMOLOGIE');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('19','NEONATOLOGIE');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('20','ORL
(OTORINOLARINGOLOGIE)');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('21','ANESTEZIE SI TERAPIE
INTENSIVA');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('22','UROLOGIE');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('23','OFTALMOLOGIE');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('24','MEDICINA DE FAMILIE');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('25','ENDOCRINOLOGIE');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES ('26','PSIHOLOGIE');
INSERT INTO specializari (ID_SPECIALIZARE, NUME) VALUES (’27','CARDIOLOGIE');
Page 2 of 17
Crearea si popularea tabelei INVESTIGATII se regasesc in scripturile de mai jos:

CREATE TABLE INVESTIGATII (ID_INVESTIGATIE number(5), ID_SPECIALIZARE number(5),


NUME varchar2(60), PRET number(8,2));

ALTER TABLE INVESTIGATII ADD CONSTRAINT PK_ID_INVESTIGATIE PRIMARY KEY


(ID_INVESTIGATIE);
ALTER TABLE INVESTIGATII ADD CONSTRAINT FK_ID_SPECIALIZARE FOREIGN KEY
(ID_SPECIALIZARE) REFERENCES SPECIALIZARI (ID_SPECIALIZARE)

INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES


(1,1,'Ac anti aquaporina 4',255.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(2,1,'Ac anti cardiolipina IgM (ACLAM)',90.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(3,1,'Test Coombs Direct',30.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(4,3,'Acid uric seric',14.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(5,3,'Acizi Biliari (ser)',90.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(6,3,'Trigliceride',15.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(7,2,'Citologie din secretie mamelonara',80.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(8,2,'E-CADHERINA',110.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(9,2,'EXAMEN HISTOPATOLOGIC A DOUA OPINIE ( blocuri si lame )',300.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(10,4,'Amilaza Serica / Izoenzime',110.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(11,4,'Confirmare HTLV 1,2',167.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(12,4,'Detectia mutatiilor genetice asociate fibrozei chistice',2610.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(13,5,'Pachet BTS diagnostic avansat',340.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(14,5,'Pachet citologie leziuni col uterin',320.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(15,5,'Pachet screening leziuni col uterin',590.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(16,6,'Magneziu seric',14.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(17,7,'Lipaza (LIPA)',19.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(18,8,'Intoleranta la lactoza (test genetic)',420.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(19,9,'Determinare grup sangvin(A,B,O)',23.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(20,10,'Aldosteron seric',200.00);

Page 3 of 17
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(21,11,'Timidinikinaza',190.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(22,12,'Rujeola Ac IgM (MASME)',145.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(23,13,'Coprocultura',60.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(24,14,'Toxocara canis Ac IgG',90.00);
INSERT INTO INVESTIGATII (ID_INVESTIGATIE,ID_SPECIALIZARE,NUME,PRET) VALUES
(25,15,'Acid tricloracetic',40.00

Crearea si popularea tabelei MEDICI se regasesc in scripturile de mai jos:


CREATE TABLE MEDICI (ID_MEDIC number(5), NUME varchar2(60),ID_SPECIALIZARE
number(5),RECENZIE number(4,2),DATA_ANGAJARE date)
ALTER TABLE MEDICI ADD CONSTRAINT PK_ID_MEDIC PRIMARY KEY (ID_MEDIC)
ALTER TABLE MEDICI ADD CONSTRAINT FK_ID_SPECIALIZARE_M FOREIGN KEY
(ID_SPECIALIZARE) REFERENCES SPECIALIZARI(ID_SPECIALIZARE)

INSERT INTO MEDICI (ID_MEDIC, NUME, ID_SPECIALIZARE, RECENZIE, DATA_ANGAJARE)


VALUES (1,'COPAESCU CATALIN',16,9.80,to_date('2013-10-06','yyyy-mm-dd'));
INSERT INTO MEDICI (ID_MEDIC, NUME, ID_SPECIALIZARE, RECENZIE, DATA_ANGAJARE)
VALUES (2,'TOMULESCU VICTOR',16,9.67,to_date('2014-02-10','yyyy-mm-dd'));
INSERT INTO MEDICI (ID_MEDIC, NUME, ID_SPECIALIZARE, RECENZIE, DATA_ANGAJARE)
VALUES (3,'PREDESCU VLAD',17,9.41,to_date('2010-11-12','yyyy-mm-dd'));
INSERT INTO MEDICI (ID_MEDIC, NUME, ID_SPECIALIZARE, RECENZIE, DATA_ANGAJARE)
VALUES (4,'RAHIMIAN HADI',17,9.64,to_date('2015-10-06','yyyy-mm-dd'));
INSERT INTO MEDICI (ID_MEDIC, NUME, ID_SPECIALIZARE, RECENZIE, DATA_ANGAJARE)
VALUES (5,'SURLEA VERONICA',18,9.64,to_date('2016-05-11','yyyy-mm-dd'));
INSERT INTO MEDICI (ID_MEDIC, NUME, ID_SPECIALIZARE, RECENZIE, DATA_ANGAJARE)
VALUES (6,'SCHEINER MIHAELA',18,9.72,to_date('2013-10-03','yyyy-mm-dd'));
INSERT INTO MEDICI (ID_MEDIC, NUME, ID_SPECIALIZARE, RECENZIE, DATA_ANGAJARE)
VALUES (7,'TOMULESCU VICTOR',19,9.67,to_date('2000-12-23','yyyy-mm-dd'));
INSERT INTO MEDICI (ID_MEDIC, NUME, ID_SPECIALIZARE, RECENZIE, DATA_ANGAJARE)
VALUES (8,'ULMEANU DAN',20,9.73,to_date('2015-03-06','yyyy-mm-dd'));
INSERT INTO MEDICI (ID_MEDIC, NUME, ID_SPECIALIZARE, RECENZIE, DATA_ANGAJARE)
VALUES (9,'TURCU FLORIN',21,9.27,to_date('2013-05-09','yyyy-mm-dd'));
INSERT INTO MEDICI (ID_MEDIC, NUME, ID_SPECIALIZARE, RECENZIE, DATA_ANGAJARE)
VALUES (10,'BORDAS DANIEL',22,9.46,to_date('2012-10-18','yyyy-mm-dd'));
INSERT INTO MEDICI (ID_MEDIC, NUME, ID_SPECIALIZARE, RECENZIE, DATA_ANGAJARE)
VALUES (11,'OPRISIU CARMEN',23,9.60,to_date('2013-10-19','yyyy-mm-dd'));
INSERT INTO MEDICI (ID_MEDIC, NUME, ID_SPECIALIZARE, RECENZIE, DATA_ANGAJARE)
VALUES (12,'NITA GHEORGHE',24,9.92,to_date('2013-12-10','yyyy-mm-dd'));
INSERT INTO MEDICI (ID_MEDIC, NUME, ID_SPECIALIZARE, RECENZIE, DATA_ANGAJARE)
VALUES (13,'GRIGORUTA SIMONA',25,9.75,to_date('2015-06-06','yyyy-mm-dd'));
INSERT INTO MEDICI (ID_MEDIC, NUME, ID_SPECIALIZARE, RECENZIE, DATA_ANGAJARE)
VALUES (14,' STANILA LAURA’,25,9.62,to_date(‘2013-10-28','yyyy-mm-dd'));

Crearea si popularea tabelei PROGRAMARI se regasesc in scripturile de mai jos:


create table programari (id_programare number(5),nume_pacient varchar2(100),id_medic
number(5),data_programare datetime)
ALTER TABLE programari ADD CONSTRAINT PK_ID_PROGRAMARE PRIMARY KEY
(id_programare)

Page 4 of 17
ALTER TABLE programari ADD CONSTRAINT FK_ID_MEDIC_P FOREIGN KEY (id_medic)
REFERENCES medici(id_medic)

insert into programari values (1,'Popescu Ion’,1,to_date('20/05/2017','dd/MM/yyyy'))


insert into programari values (2,'Mircea Ionica',1,to_date('15/01/2018','dd/MM/yyyy'))
insert into programari values (3,'Stanciu Marinela',2,to_date('15/01/2018','dd/MM/yyyy'))
2.2. Schema bazei de date

2.3 Continutul aplicatiei APEX

Meniul aplicatiei este alcatuit din cinci pagini: HOME, Specializari, Investigatii, Medici si
Programari.

Page 5 of 17
2.3.1 Pagina HOME - este o pagina ce contine regiuni cu continut static: investigatii, specializari si medici.
Cele trei regiuni permit directionarea utilizatorului catre pagina cu acelasi nume la interceptarea
evenimentului de click pe imagine.

Deasupra fiecarei imagini ( corespunzatoare sectiunilor investigatii, specializari si medici) se afla


informatii privind numarul inregistrarilor din tabela corespunzatoare fiecarei sectiuni.

Page 6 of 17
2.3.2 Pagina SPECIALIZARI - este o pagina care contine o regiune de tipul Interactive Grid si arata
continutul tabelei cu acelasi nume.

2.3.3 Pagina INVESTIGATII - este o pagina care contine o regiune de tipul Interactive Grid si ofera
informatii despre investigatiile oferite si specializarea in care se incadreaza fiecare investigatie.

Page 7 of 17
In cadrul acestei pagini se pot realiza operatii diverse cum ar fi: adaugarea, editarea, stergerea sau
filtrarea dupa un cuvant cheie.

Adaugarea unei investigatii:

Inainte de inserarea in tabela INVESTIGATII, este validata existenta specializarii in tabela


SPECIALIZARI. Aceasta validare se face pe baza unui cod PL/SQL la interceptarea evenimentului de
Mouse Leave.

Page 8 of 17
Inserarea unei investigatii se realizeaza cu un proces ce are la baza cod PL/SQL.

Page 9 of 17
2.3.4 Pagina MEDICI - este o pagina ce contine urmatoarele tipuri de regiuni: Interactive Report, Chart,
Form si Clasic Report based on a function.

Aceasta pagina ofera posibilitatea de insera medici in tabela MEDICI. La interceptarea


evenimentului de click pe butonul Adauga medic, se deschide un dialog ce contine o regiune de tip Form.

Page 10 of 17
Inainte de inserarea medicului in tabela MEDICI, se verifica daca numele medicului este valid, prin
cautarea numerelor si a caracterelor speciale, se verifica ca a fost introdusa o recenzie pentru acesta si ca
valoarea recenziei introduse este in intervalul [1, 10].

Page 11 of 17
Validarea numelui medicului se realizeaza prin urmatorul cod PL/SQL.

Actiunea de inserare a medicului in tabela s-a realizat prin executia codului PL/SQL de mai jos.

Pe baza numarului de medici pe fiecare specializare, a fost realizat urmatorul grafic:

Page 12 of 17
Sectiunea de filtrare programari s-a realizat pe baza unei regiuni de tipul Classic Report based on a
function pe baza codului PL/SQL de mai jos:

2.3.5 Pagina PROGRAMARI - este o pagina ce contine urmatoarele tipuri de regiuni: Classic Report si
Data Loading.

Page 13 of 17
Sectiunea Actualizeaza ofera posibilitatea de a modifica medicul asignat unei programari pentru un
anumit pacient si de a sterge o programare. Atunci cand se introduce un id pentru programare, lista aferenta
medicului se precompleteaza cu medicii din aceeasi specializare a medicului ce i-a fost asignat pacientul la
inserarea programarii. Pentru stergerea unei programari, este nevoie de bifarea checkbox-ului Delete.

Actiunile de actualizare si stergere sunt procese bazate pe cod


PL/SQL.

Page 14 of 17
Incarcarea listei Medici

Incarcarea listei de medici cu medici din aceeasi specializare cu cea a medicului ce i-a fost asignat
unui pacient la inserarea programarii, se realizeaza la interceptarea evenimentului de Change pe campul id
programare.

Page 15 of 17
Sectiunea Data Loading ofera importul programarilor dintr-un fisier .CSV in tabela
PROGRAMARI.

Page 16 of 17
Page 17 of 17