Sunteți pe pagina 1din 36

Spital

 Dogaru Emilian Mihai-310440501RSL181072-grupa4


 Olaru Amalia Gabriela-310440501rsl181121- grupa 4
 Ghercă Bianca- 310440501RSL181082-grupa 4

1
Specificatii

 Am ales pentru acest proiect un spital, în care oferim servicii medicale de


calitate(consulatii periodice, tratamente s.a);
 În gestiunea spitalului avem în vedere personalul unitatii
medicale(asistenți, medici, infiermieri);
 Se știe despre fiecare medic secția, funcția și specializarea acestuia în
cadrul spitalului;
 Pentru ca un spital trebuie sa asigure și sănătatea clienților pe timpul
nopții, avem in vedere și linii de garda alcătuite din 2 medici specialiști;
 Pentru că pacienți sunt mulțumiți de serviciile noastre medicale, aceștia
revin, prin urmare vom păstra datele acestuia(nume, medicul care l-a
consultat, ce rețetă a primit, diagnostic, data consultarii, dar și daca a fost
internat sau nu);
 Pentru pacienții internați se ia în vedere tratamentul necesar insănătoșirii
acestuia, dacă a fost nevoie de schimb între diferite secții, dar si data când
a fost internat/externat;
 Pentru că tratamentele difera de obicei de la un pacient la altul, vom nota
pentru fiecare tratament utilizat componența acestuia;
 Întrucât avem și pacienți sub 18 ani sau persoane asigurate, oferim și
compensări rețetelor;
 Datorită suprasolicitării, am ales și câțiva parteneri cu care colaborăm în
vederea însănătoțirii pacienților;
 Echipamentele utilizate sunt verificate sa fie funcționale, atât in propriul
spital, dar și la parteneri;

Graful pentru instituția noastră arată așa:

2
Nume
Adresa Data
Interval_orar
Denumire_e
chipament Sectii_dispon Telefon
Id_institutie ibile Nu
me
Componenta _Ca
Id_Echipame MedicDeGa dru
nt rda Funcție
Cod_tratame
nt Id_Cadru
Observatii Serie
Program
MedicSefDe
Schimb_secti Id_internare Garda
i

Data_interna Id_Medic
Sectie
re Nume_diagn
Data_extern ostic
are
Functie
Cod_diagnos
tic CodPacient Special
izare
Procent_com
pensare
Id_Reteta Internat? Nume_Pacie Data_Consul
nt tare
Data_Expirar 3
e
Partea a 2-a

Tabele:
Echipe_medicale
Id_cadru Nume_cadru Functie Program
100 Pop Vladut Medic 08:00-16:00

ListaCompletaMedici
Nr. Crt. Id_Medic Sectie Functie Specializare
1 100 CABINET MEDIC PRIMAR DIABET
DIABET - UMF ZAHARAT,
DIRECTOR NUTRITIE SI
MEDICAL BOLI
METABOLICE
...

MedicSefDeGard MedicDeGarda Data Interval_orar telefon


a
100 101 10/12/2018 22:00-08:00 074569896
...
LiniiDeGarda

Pacienti
CodPacien NumePacien Id_medi CodDiagnosti Id_Retet Data_consultar Internat
t t c c a e ?
400 Copac Vasile 100 A49.9 1000A 10/12/2018 Da
...

Internari
Id_interna Cod_pacie Cod_Tratame Schimb_sectii Data_interna Data_externa
re nt nt re re
1000 400 2000B SECT CL 10/12/2018 1/01/2019
CHIRURGIE
BMF,
MICROCHIRURG
IE
RECONSTRUCTI
VA
...

4
Diagnostice
CodDiagnostic NumeDiagnostic
A49.9 Infectia bacteriana,
nespecificata, fara coprocultura
...

Tratament
Cod_Tratament Componenta
2000B Lumpectomia, Mastectomia partiala
...

Retete
Id_Reteta DataExpirare ProcentCompensare
1000A 17/12/2018 100
...

Parteneri
Nume ID_Institutie Adresa Sectii_Disponibile

Spitalul 2000 Strada CARDIOLOGIE,CHIRURGIE


Militar General Henri VASCULARĂ,CHIRURGIE
Mathias GENERALA
Berthelot 7-9,
Iași 700483
...

Echipamente
ID_Echipament Serie ID_Institutie DenumireEchipamen Observatii
t
3000 4000A 2000 ANALIZOR ELIZA - Functional
SISTEM AUTOMAT
ELISA
...

5
Create
drop table if exists Echipe_medicale CASCADE;
drop table if exists ListaCompletaMedici CASCADE;
drop table if exists LiniiDeGarda CASCADE;
drop table if exists Pacienti CASCADE;
drop table if exists Internari CASCADE;
drop table if exists Diagnostice CASCADE;
drop table if exists Tratament CASCADE;
drop table if exists Retete CASCADE;
drop table if exists Parteneri CASCADE;
drop table if exists Echipamente CASCADE;

CREATE TABLE Echipe_medicale


(
Id_cadru bigint
CONSTRAINT pk_cadru PRIMARY KEY
CONSTRAINT un_cadru UNIQUE
CONSTRAINT nn_cadru NOT NULL,
Nume_cadru character varying(100),
Functie character varying(100),
Program character varying(100)
);

CREATE TABLE ListaCompletaMedici


( Nr_Crt bigint,
id_medic bigint
CONSTRAINT fk_medic references Echipe_medicale(Id_cadru),
Sectie character varying(100),

6
Functie character varying(100),
Specializare character varying(100),
constraint pk_medic primary key(Nr_Crt, id_medic)
);

CREATE TABLE LiniiDeGarda


(
MedicSefDeGarda bigint
CONSTRAINT fk_medicSef references Echipe_medicale(Id_cadru),
MedicDeGarda bigint
CONSTRAINT fk_medicgarda references Echipe_medicale(Id_cadru),
data date,
interval_orar character varying(20),
telefon bigint,
constraint pk_garda primary key(MedicSefDeGarda, MedicDeGarda, data)
);

Create Table Retete


(
Id_Reteta character varying(10)
constraint pk_reteta primary key
constraint un_reteta unique
constraint nn_reteta not null,
Data_Expirare date,
ProcentCompensare int
);

7
Create Table Diagnostice
(
Cod_Diagnostic character varying(10)
constraint pk_diagnostic primary key
constraint un_diagnostic unique
constraint nn_diagnostic not null,
Nume_Diagnostic character varying(100) );

Create Table Tratament


(Cod_Tratament character varying(10)
constraint pk_tratament primary key
constraint un_tratament unique
constraint nn_tratament not null,
Componenta character varying(1000) );

Create Table Pacienti


(Cod_Pacient bigint
Constraint pk_pacient primary key
constraint un_pacient unique
constraint nn_pacient not null,
NumePacient character varying(100),
Medic bigint
CONSTRAINT fk_consultat_de references Echipe_medicale(Id_cadru),
CodDiagnostic character varying(10)
CONSTRAINT fk_diagnostic references Diagnostice(Cod_Diagnostic),
Id_Reteta character varying(10)
CONSTRAINT fk_reteta references Retete(Id_Reteta),
data_consultare date,
internat? character varying(2) );

8
Create Table Internari
(Id_internare bigint
constraint pk_internare primary key
constraint un_internare unique
constraint nn_internare not null,
CodPacient bigint
constraint fk_pacient references Pacienti(Cod_Pacient),
Cod_tratament character varying(10)
constraint fk_tratament references Tratament(Cod_Tratament),
Schimb_sectii character varying(500),
Data_internare date,
Data_externare date);

Create Table Parteneri


(Nume character varying(50),
Id_Institutie bigint
constraint pk_partener primary key
constraint un_partener unique
constraint nn_partener not null,
adresa character varying(200),
Sectii_disponibile character varying(500) );

Create table Echipamente


(Id_Echipament bigint
constraint pk_echipament primary key
constraint un_echipament unique
constraint nn_echipament not null,

9
Serie character varying(20),
Institutie bigint
CONSTRAINT fk_institutie references Parteneri(Id_Institutie),
DenumireEchipament character varying(100),
Observatii character varying(1000) );

Inserturi

insert into diagnostice values('A49.9','Infectia bacteriana, nespecificata, fara


coprocultura');
insert into diagnostice values('B18.1','Hepatita virala cronica B fara agent Delta
- monitorizare');
insert into diagnostice values('B18.2','Hepatita virala cronica C ');
insert into diagnostice values('D17.1','Tumoara lipomatoasa benigna a pielii si a
tesutului subcutanat al trunchiului');
insert into diagnostice values('D50.0','Anemia prin carenta de fier secundara
unei pierderi de sange cronica');
insert into diagnostice values('D50.8','Alte anemii prin carenta de fier');
insert into diagnostice values('D50.9','Anemia prin carenta de fier
nespecificata');
insert into diagnostice values('E04.2','Gusa multimodulara netoxica');
insert into diagnostice values('E06.3','Tiroida autoimuna');
insert into diagnostice values('E10.65','Diabet mellitus zaharat tip 1 cu control
slab');
insert into diagnostice values('E11.65','Diabet mellitus zaharat tip 2 cu control
slab');
insert into diagnostice values('E11.71','Diabet mellitus tip 2 cu complicatii
microvasculare multiple');
insert into diagnostice values('E11.9','Diabet mellitus zaharat tip 2 fara
complicatii');
insert into diagnostice values('E44.0','Malnutritia proteino energetica moderata');

10
insert into diagnostice values('E44.1','Malnutritia proteino energetica usoara');
insert into diagnostice values('E66.0','Obezitate datorita unui exces caloric');
insert into diagnostice values('E78.2','Hiperlipidemie mixta');
insert into diagnostice values('E89.0','Hipotiroidism postprocedural');
insert into diagnostice values('F41.2','Tulburare anxioasa si depresiva mixta');
insert into diagnostice values('50.9','Tulburare de apetit, nespecificata');

insert into parteneri values('SPITALUL MILITAR',2000,'Strada General Henri


Mathias Berthelot 7-9, Iași 700483','CARDIOLOGIE,CHIRURGIE
VASCULARĂ,CHIRURGIE GENERALA');
insert into parteneri values('INST. DE BOLI CARDIOVASCULARE', 2001,
'Bulevardul Carol I 50, Iași 700503', 'CHIRURGIE CARDIOVASCULARA,
CARDIOLOGIE,RADIOLOGIE');
insert into parteneri values('SPITALUL "DR. C.I. PARHON"',2002,'Bulevardul
Carol I Nr. 50, Iași 700503', 'NEUROLOGIE,MEDICINA INTERNA,
UROLOGIE');
insert into parteneri values('SPITALUL CLINIC CAI FERATE',2003,'Strada
Garabet Ibrăileanu 1, Iași 700506','CHIRURGIE GENERALA, NEUROLOGIE,
OFTALMOLOGIE,ORL');
insert into parteneri values('SPITALUL DE RECUPERARE',2004,'Strada
Pantelimon Halipa 14, Iași', 'ORTOPEDIE, CHIRURGIE, NEUROLOGIE');
insert into parteneri values('MATERNITATEA CUZA-VODA',2005,'Strada
Cuza Vodă nr. 34, Iași 700038', 'OBSTRETICA, GINECOLOGIE,
NEONATOLOGIE');
insert into parteneri values('MATERNITATEA ELENA-DOAMNA', 2006,
'Strada Elena Doamna, Iași', 'OBSTRETICA, GINECOLOGIE,
NEONATOLOGIE, RADIOLOGIE');
insert into parteneri values('SPITALUL DE COPII "SF. MARIA"',2007,'Strada
Vasile Lupu nr. 62, Iași 700309', 'CARDIOLOGIE, GASTROENTEROLOGIE,
HEMATOLOGIE');
insert into parteneri values('SPITALUL DE URG. "PROF. DR. N. OBLU"',
2008, 'Strada Ateneului 2, Iași 700309', 'NEUROCHIRURGIE, NEUROLOGIE,
OFTALMOLOGIE');

11
insert into parteneri values('SPITALUL DE PSIHIATRIE SOCOLA', 2009,
'Șoseaua Bucium 36, Iași 700282','PSIHIATRIE TOXICOMANIE,PSIHIATRIE
PEDIATRICA');
insert into parteneri values('INST. DE ONCOLOGIE',2010,'Strada General
Henri Mathias Berthelot 2-4, Iași 700483', 'ONCOLOGIE, RADIOTERAPIE,
ONCOLOGIE PEDIATRICA');
insert into parteneri values('INSTITUTUL DE MEDICINA LEGALA',2011,
'Strada Buna Vestire nr. 4, Iași 700455','MEDICINA LEGALA');
insert into parteneri values('SC ARCADIA MEDICAL CENTER SRL',2012,
'Strada Sărărie 38, Iași 700452','CARDIOLOGIE, KINETOTERAPIE,
LOGOPEDIE');
insert into parteneri values('SC EXPLORA RX SRL',2013,'Strada Vasile Conta
nr. 2, Iași 700106', 'ONCOLOGIE,ORL,NEUROPEDIATRIE');
insert into parteneri values('Strada Atelierului 12, Iași',2014,'Campus Tudor
Vladimirescu, Aleea Profesor Vasile Petrescu, Iași 700562','PNEUMOLOGIE');

insert into echipamente values(3000,'4000A',2000,'AGITATOR MECANIC CU


PLATFORMA','FUNCTIONAL');
insert into echipamente values(3001,'4001A',2001,'AGITATOR ORBITAL
TIRAMAX','FUNCTIONAL');
insert into echipamente values(3002,'4002A',2002,'AGITATOR VORTEX TK
3S MIXER','FUNCTIONAL');
insert into echipamente values(3003,'4003A',2003,'AGREGOMETRU',
'FUNCTIONAL');
insert into echipamente values(3004,'4004A',2004,'BISTURIU ELECTRIC-
UNITATE ELECTROCHIRURGIE','FUNCTIONAL');
insert into echipamente values(3005,'4005A',2005,'BRONHOSCOP
PEDIATRIC PENTRU EXTRACTIE CORPI STRAINI','FUNCTIONAL');
insert into echipamente values(3006,'4006A',2006,'COMPUTER TOMOGRAF
CU 16 SLICEURI','FUNCTIONAL');
insert into echipamente values(3007,'4007A', 2007,'DEFIBRILATOR',
'FUNCTIONAL');

12
insert into echipamente values(3008,'4008A',2008,'ECHIPAMENT DE FIBRA
OPTICA PENTRU INTUBARE','NEFUNCTIONAL');
insert into echipamente
values(3009,'4009A',2009,'ECOGRAF','FUNCTIONAL');
insert into echipamente
values(3010,'4010A',2010,'ELECTROCARDIOGRAF','FUNCTIONAL');
insert into echipamente
values(3011,'4011A',2011,'INCUBATOR','FUNCTIONAL');
insert into echipamente values(3012,'4012A',2012,'INJECTOMAT POMPA
VOLUMETRICA PT SERINGI','FUNCTIONAL');
insert into echipamente values(3013,'4013A',2013,'LAMPA OPERATIE CU
SATELIT','FUNCTIONAL');
insert into echipamente values(3014,'4014A',2014,'MASA OPERATIE
CHIRURGIE GENERALA','FUNCTIONAL');

insert into retete values('1000A','19/10/2020',100);


insert into retete values('1001A','25/10/2020',75);
insert into retete values('1002A','30/10/2020',50);
insert into retete values('1003A','02/11/2020',65);
insert into retete values('1004A','05/11/2020',75);
insert into retete values('1005A','10/11/2020',25);
insert into retete values('1006A','20/11/2020',65);
insert into retete values('1007A','25/11/2020',55);
insert into retete values('1008A','30/11/2020',35);
insert into retete values('1009A','02/12/2020',100);
insert into retete values('1010A','08/12/2020',75);
insert into retete values('1011A','14/12/2020',80);
insert into retete values('1012A','20/12/2020',90);
insert into retete values('1013A','25/12/2020',100);
insert into retete values('1014A','31/12/2020',25);
13
insert into retete values('1015A','05/01/2021',35);
insert into retete values('1016A','25/02/2021',100);
insert into retete values('1017A','02/03/2021',85);
insert into retete values('1018A','27/03/2021',100);
insert into retete values('1019A','12/04/2021',45);

insert into tratament values('D01003','Miringotomia cu insertie de tub,


unilateral');
insert into tratament values('D01004','Miringotomia cu insertie de tub,
bilateral');
insert into tratament values('P07001','Rinoplastie implicand corectia
cartilajului');
insert into tratament values('P07002','Rinoplastia implicand corectarea
conturului osos');
insert into tratament values('C05702','Proceduri pentru strabism implicand 1 sau
2 muschi, un ochi');
insert into tratament values('C01302','Excizia pterigionului');
insert into tratament values('C08003','Corecţia ectropionului sau entropionului
prin strângerea sau scurtarea retractorilor inferiori');
insert into tratament values('C08004','corecţia ectropionului sau entropionului
prin alte corecţii ale retractorilor inferiori');
insert into tratament values('C08006','corecţia ectropion-ului sau entropion-ului
cu rezecţie largă');
insert into tratament values('F00801','Extractie dentara sau a unor parti de
dinte');
insert into tratament values('F00802','Extractie dentara cu separare');
insert into tratament values('F00901','Indepartare chirurgicala a unui dinte
erupt');
insert into tratament values('F00902','Indepartare chirurgicala a 2 sau mai multi
dinti erupti');

14
insert into tratament values('F00903','Indepartarea chirurgicala a unui dinte
inclus sau partial erupt, fara indepartare de os sau separare');
insert into tratament values('F00904','Indepartarea chirurgicala a unui dinte
inclus sau partial erupt, cu indepartare de os sau separare');
insert into tratament values('O13205','Artroscopia genunchiului');
insert into tratament values('O13404','Meniscectomie artroscopica a
genunchiului');
insert into tratament values('O18104','Indepartarea de brosa, surub sau fir
metalic, neclasificata in alta parte');
insert into tratament values('O18106','Indepartarea de placa, tija sau cui,
neclasificata in alta parte');
insert into tratament values('O20404','Corectia diformitatii osoase');

insert into echipe_medicale values(100, 'Pop Vladut', 'Medic', '08:00-16:00');


insert into echipe_medicale values(200, 'Magda Vasilie', 'asistent', '08:00-
16:00');
insert into echipe_medicale values(300, 'Popescu Andreea', 'chirurug', '08:00-
16:00');
insert into echipe_medicale values(101, 'Bostan Gheorghe', 'Medic', '08:00-
16:00');
insert into echipe_medicale values(102, 'Popa Viorica','Medic', '08:00-16:00');
insert into echipe_medicale values(103,'Tilica Alina', 'Medic','16:00-24:00');
insert into echipe_medicale values(104,'Hincu Andrei', 'Medic', '08:00-16:00');
insert into echipe_medicale values(105,'Baroi Maria', 'Medic', '16:00-24:00');
insert into echipe_medicale values(106, 'Georgescu Vasile','Medic', '08:00-
16:00');
insert into echipe_medicale values(107,'Nedelea Paul', 'Medic', '24:00-08:00');
insert into echipe_medicale values(108,'Pascan Oana', 'Medic', '16:00-24:00');
insert into echipe_medicale values(109,'Stan Cristina','Medic', '08:00-16:00');
insert into echipe_medicale values(110, 'Nitu Elena','Medic', '16:00-24:00');

15
insert into echipe_medicale values(111,'Lupu Vasile','Medic', '24:00-08:00');
insert into echipe_medicale values(112,'Balasca Monica','Medic', '08:00-16:00');
insert into echipe_medicale values(113,'Enache Monica','Medic','16:00-24:00');
insert into echipe_medicale values(114,'Mogos Vasile','Medic','24:00-08:00');
insert into echipe_medicale values(115,'Stanciu Carol','Medic', '08:00-16:00');
insert into echipe_medicale values(201,'Vasilache Oana','Asistent', '08:00-
16:00');
insert into echipe_medicale values(202,'Alexa Iuliana','Asistent', '16:00-24:00');
insert into echipe_medicale values(203,'Ionescu Lavinia','Asistent', '08:00-
16:00');
insert into echipe_medicale values(204,'Obada Otilia','Asistent', '16:00-24:00');
insert into echipe_medicale values(205,'Dobos Angela','Asistent', '08:00-16:00');
insert into echipe_medicale values(206,'Apopei Gina','Asistent', '24:00-08:00');
insert into echipe_medicale values(207,'Deliu Radu','Asistent', '08:00-16:00');
insert into echipe_medicale values(208,'Neagu Raluca','Asistent', '08:00-16:00');
insert into echipe_medicale values(209,'Damian Mihaela','Asistent', '16:00-
24:00');
insert into echipe_medicale values(210,'Carp Vlad','Asistent', '08:00-16:00');
insert into echipe_medicale values(211,'Cobzaru Stefan','Asistent', '16:00-
24:00');
insert into echipe_medicale values(212,'Filip Alina','Asistent', '24:00-08:00');
insert into echipe_medicale values(213,'Herciu Gabriela','Asistent', '24:00-
08:00');
insert into echipe_medicale values(214,'Lazar Anca','Asistent', '24:00-08:00');
insert into echipe_medicale values(215,'Pricop Daniela','Asistent', '16:00-
24:00');
insert into echipe_medicale values(301,'Zilate Gabriela','Chirurg', '08:00-16:00');
insert into echipe_medicale values(302,'Stoica Elena', 'Chirurg','16:00-24:00');
insert into echipe_medicale values(303,'Chiriac Andrei', 'Chirurg','08:00-16:00');

16
insert into echipe_medicale values(304,'Ciupilan Daniel', 'Chirurg', '24:00-
08:00');
insert into echipe_medicale values(305,'Labusca Ion', 'Chirurg', '08:00-16:00');
insert into echipe_medicale values(306,'Foia Teodora', 'Chirurg', '24:00-08:00');
insert into echipe_medicale values(307,'Nistor Silvia', 'Chirurg', '16:00-24:00');
insert into echipe_medicale values(308,'Barnea Stefania', 'Chirurg', '08:00-
16:00');
insert into echipe_medicale values(309,'Lapuste Catalina', 'Chirurg', '24:00-
08:00');
insert into echipe_medicale values(310,'Fotea Iuliana', 'Chirurg', '16:00-24:00');
insert into echipe_medicale values(311,'Alexei Adrian', 'Chirurg', '08:00-16:00');
insert into echipe_medicale values(312,'Pricop Felicia', 'Chirurg', '16:00-24:00');
insert into echipe_medicale values(313,'Ursaru Manuela', 'Chirurg', '24:00-
08:00');
insert into echipe_medicale values(314,'Zaharia Mariana', 'Chirurg', '16:00-
24:00');
insert into echipe_medicale values(315,'Hincu Elena', 'Chirurg','24:00-08:00');

insert into LiniiDeGarda values(100,102,'10/12/2018','08:00-


16:00',0746965946);
insert into LiniiDeGarda values(103,105,'10/12/2018','16:00-
24:00',0746965946);
insert into LiniiDeGarda values(107,111,'10/12/2018','24:00-
08:00',0746965946);
insert into LiniiDeGarda values(101,104,'11/12/2018','08:00-
16:00',0746965946);
insert into LiniiDeGarda values(108,110,'11/12/2018','16:00-
24:00',0746965946);
insert into LiniiDeGarda values(107,111,'11/12/2018','24:00-
08:00',0746965946);

17
insert into LiniiDeGarda values(106,109,'12/12/2018','08:00-
16:00',0746965946);
insert into LiniiDeGarda values(113,108,'12/12/2018','16:00-
24:00',0746965946);
insert into LiniiDeGarda values(114,107,'12/12/2018','24:00-
08:00',0746965946);
insert into LiniiDeGarda values(112,115,'13/12/2018','08:00-
16:00',0746965946);
insert into LiniiDeGarda values(113,105,'13/12/2018','16:00-
24:00',0746965946);
insert into LiniiDeGarda values(114,111,'13/12/2018','24:00-
08:00',0746965946);
insert into LiniiDeGarda values(101,100,'14/12/2018','08:00-
16:00',0746965946);
insert into LiniiDeGarda values(103,108,'14/12/2018','16:00-
24:00',0746965946);
insert into LiniiDeGarda values(111,107,'14/12/2018','24:00-
08:00',0746965946);
insert into LiniiDeGarda values(102,104,'15/12/2018','08:00-
16:00',0746965946);
insert into LiniiDeGarda values(113,110,'15/12/2018','16:00-
24:00',0746965946);
insert into LiniiDeGarda values(107,114,'15/12/2018','24:00-
08:00',0746965946);
insert into LiniiDeGarda values(115,100,'16/12/2018','08:00-
16:00',0746965946);
insert into LiniiDeGarda values(108,103,'16/12/2018','16:00-
24:00',0746965946);
insert into LiniiDeGarda values(107,111,'16/12/2018','24:00-
08:00',0746965946);
insert into LiniiDeGarda values(112,101,'17/12/2018','08:00-
16:00',0746965946);

18
insert into LiniiDeGarda values(113,105,'17/12/2018','16:00-
24:00',0746965946);
insert into LiniiDeGarda values(114,111,'17/12/2018','24:00-
08:00',0746965946);
insert into LiniiDeGarda values(109,102,'18/12/2018','08:00-
16:00',0746965946);
insert into LiniiDeGarda values(103,110,'18/12/2018','16:00-
24:00',0746965946);
insert into LiniiDeGarda values(111,107,'18/12/2018','24:00-
08:00',0746965946);
insert into LiniiDeGarda values(106,104,'19/12/2018','08:00-
16:00',0746965946);
insert into LiniiDeGarda values(108,105,'19/12/2018','16:00-
24:00',0746965946);
insert into LiniiDeGarda values(114,111,'19/12/2018','24:00-
08:00',0746965946);
insert into LiniiDeGarda values(100,106,'20/12/2018','08:00-
16:00',0746965946);
insert into LiniiDeGarda values(113,103,'20/12/2018','16:00-
24:00',0746965946);
insert into LiniiDeGarda values(107,114,'20/12/2018','24:00-
08:00',0746965946);
insert into LiniiDeGarda values(104,115,'21/12/2018','08:00-
16:00',0746965946);
insert into LiniiDeGarda values(110,105,'21/12/2018','16:00-
24:00',0746965946);
insert into LiniiDeGarda values(114,111,'21/12/2018','24:00-
08:00',0746965946);
insert into LiniiDeGarda values(102,112,'22/12/2018','08:00-
16:00',0746965946);
insert into LiniiDeGarda values(113,110,'22/12/2018','16:00-
24:00',0746965946);

19
insert into LiniiDeGarda values(107,111,'22/12/2018','24:00-
08:00',0746965946);
insert into LiniiDeGarda values(106,104,'23/12/2018','08:00-
16:00',0746965946);
insert into LiniiDeGarda values(105,103,'23/12/2018','16:00-
24:00',0746965946);
insert into LiniiDeGarda values(111,114,'23/12/2018','24:00-
08:00',0746965946);
insert into LiniiDeGarda values(100,106,'24/12/2018','08:00-
16:00',0746965946);
insert into LiniiDeGarda values(108,110,'24/12/2018','16:00-
24:00',0746965946);
insert into LiniiDeGarda values(111,107,'24/12/2018','24:00-
08:00',0746965946);
insert into LiniiDeGarda values(101,109,'25/12/2018','08:00-
16:00',0746965946);
insert into LiniiDeGarda values(103,105,'25/12/2018','16:00-
24:00',0746965946);
insert into LiniiDeGarda values(114,111,'10/12/2018','24:00-
08:00',0746965946);

insert into ListaCompletaMedici values(1,100,'CABINET DIABET','MEDIC


PRIMAR - UMF DIRECTOR MEDICAL','DIABET ZAHARAT, NUTRITIE
SI BOLI METABOLICE');
insert into ListaCompletaMedici values(2,101,'SECTIA CLINICA
CARDIOLOGIE','MEDIC PRIMAR - UMF','CARDIOLOGIE');
insert into ListaCompletaMedici values(3,102,'SECTIA CLINICA MEDICINA
INTERNA I','MEDIC SPECIALIST','MEDICINA INTERNA');
insert into ListaCompletaMedici values(4,103,'SECT CLINICA MEDICINA
INTERNA II','MEDIC PRIMAR','MEDICINA INTERNA');
insert into ListaCompletaMedici values(5,104,'SECTIA CLINICA
ORTOPEDIE TRAUMATOLOGIE','MEDIC PRIMAR - UMF','ORTOPEDIE
SI TRAUMATOLOGIE');

20
insert into ListaCompletaMedici values(5,105,'SECTIA CLINICA
OFTALMOLOGIE','MEDIC SPECIALIST','OFTALMOLOGIE');
insert into ListaCompletaMedici values(7,106,'SECTIA ORL','MEDIC
PRIMAR','OTORINOLARINGOLOGIE');
insert into ListaCompletaMedici values(8,107,'SECTIA CLINICA ATI','MEDIC
SPECIALIST - UMF','ANESTEZIE SI TERAPIE INTENSIVA');
insert into ListaCompletaMedici values(9,108,'SECTIA CLINICA
ENDOCRINOLOGIE','MEDIC SPECIALIST','ENDOCRINOLOGIE');
insert into ListaCompletaMedici values(10,109,'SECTIA CLINICA
HEMATOLOGIE','MEDIC SPECIALIST','HEMATOLOGIE');
insert into ListaCompletaMedici values(11,110,'SECTIA CLINICA
GASTROENTEROLOGIE I','GASTROENTEROLOGIE');
insert into ListaCompletaMedici values(12,111,'SECTIA CLINICA
IMUNOLOGIE-ALERGOLOGIE','ALERGOLOGIE SI IMUNOLOGIE
CLINICA');
insert into ListaCompletaMedici values(13,112,'UNITATE PRIMIRE
URGENTE','MEDIC PRIMAR-UPU','MEDICINA DE URGENTA');
insert into ListaCompletaMedici values(14,113,'SECTIA CLINICA
DERMATO-VENEROLOGIE','MEDIC PRIMAR -
UMF','DERMATOLOGIE');
insert into ListaCompletaMedici values(15,114,'LABORATOR ANALIZE
MEDICALE','MEDIC PRIMAR','MEDICINA DE LABORATOR');
insert into ListaCompletaMedici values(16,115,'CABINET
PEDIATRIE','MEDIC SPECIALIST','PEDIATRIE');

insert into Pacienti values(400,'Roman


Vasile',100,'A49.9','1000A','12/10/2018','DA');
insert into Pacienti values(401,'Mocanu
Ion',115,'B18.1','1001A','12/10/2018','DA');
insert into Pacienti values(402,'Gheorghe
Petru',101,'D17.1','1002A','14/10/2018','DA');
insert into Pacienti values(403,'Dobos
Maria',107,'D50.8','1003A','13/10/2018','DA');

21
insert into Pacienti values(404,'Tiba
Alina',108,'B18.2','1004A','15/10/2018','DA');
insert into Pacienti values(405,'Toma
Silvia',102,'E06.3','1005A','14/10/2018','NU');
insert into Pacienti values(406,'Diaconu
Daniel',112,'D50.0','1006A','14/10/2018','DA');
insert into Pacienti values(407,'Balint
Elena',115,'E10.65','1007A','16/10/2018','DA');
insert into Pacienti values(408,'Vasile
Costel',103,'E04.2','1008A','17/10/2018','NU');
insert into Pacienti values(409,'Mihai
Alin',109,'F41.2','1009A','18/10/2018','DA');
insert into Pacienti values(410,'Cioata
Ana',102,'E78.2','1010A','17/10/2018','NU');
insert into Pacienti values(411,'Bostan
George',105,'E44.1','1011A','19/10/2018','NU');
insert into Pacienti values(412,'Negru
Ion',104,'D17.1','1012A','19/10/2018','DA');
insert into Pacienti values(413,'Condurache
Ana',113,'A49.9','1013A','20/10/2018','DA');
insert into Pacienti values(414,'Popa
Ionut',110,'E44.1','1014A','19/10/2018','NU');
insert into Pacienti values(415,'Tiron
Adrian',106,'D50.8','1015A','14/10/2018','DA');
insert into Pacienti values(416,'Vasilache
Elena',111,'E06.3','1016A','15/10/2018','DA');
insert into Pacienti values(417,'Cadar
Veronica',114,'B18.2','1017A','16/10/2018','NU');
insert into Pacienti values(418,'Petrisor
Carmen',100,'A49.9','1018A','17/10/2018','DA');
insert into Pacienti values(419,'Danca
Anton',102,'F41.2','1019A','21/10/2018','DA');

22
insert into Internari values(1000,400,'D01003','SECT CL MEDICINA
INTERNA II','12/10/2018','24/10/2018');
insert into Internari values(1001,401,'D01004','SECT CL CHIRURGIE
BMF','12/10/2018','20/10/2018');
insert into Internari values(1002,402,'O13205','SECTIA CLINICA CHIRURGIE
VASCULARA','14/10/2018','20/10/2018');
insert into Internari values(1003,403,'F00901',NULL,'13/10/2018','24/10/2018');
insert into Internari values(1004,404,'C08004','SECTIA CLINICA
ATI','15/10/2018','25/10/2018');
insert into Internari values(1005,406,'O13404',NULL,'14/10/2018','20/10/2018');
insert into Internari values(1006,407,'O20404','SECT CL MEDICINA
INTERNA II','16/10/2018','30/10/2018');
insert into Internari values(1007,409,'C05702',NULL,'18/10/2018','24/10/2018');
insert into Internari values(1008,412,'P07001','SECTIA CLINICA CHIR
PLASTICA, MICROCHIR.RECONSTR','19/10/2018','24/10/2018');
insert into Internari values(1009,413,'P07001','CABINET
DIABET','20/10/2018','29/10/2018');
insert into Internari values(1010,415,'O20404',NULL,'14/10/2018','23/10/2018');
insert into Internari values(1011,416,'F00904','SECTIA CLINICA
ATI','15/10/2018','22/10/2018');
insert into Internari values(1012,418,'O13205',NULL,'17/10/2018','28/10/2018');
insert into Internari values(1013,419,'C05702','SECTIA CLINICA
GASTROENTEROLOGIE II','21/10/2018','30/10/2018');

23
Interogari Dogaru Emilian Mihai
SQL:
Grupare și filtrare:
/*1. Cati angajati au programul intre orele 8-16(sa se scrie separat cati
medici, cati asistenti si cati chirurgi)?*/

select functie, count(*)


from echipe_medicale
where program='08:00-16:00'
group by functie

Subconsultări în clauza HAVING și/sau FROM:


/*2. Care sunt pacientii consultati de catre medical care l a consultat pe
pacientul Toma Silvia?*/

select numepacient
from pacienti
where medic in (select medic
from pacienti
where numepacient='Toma Silvia' )

Expresii-tabelă și "tabele-pivot" (cu sau fără joncțiuni externe):


/* 3. Afisati pentru medicii Pop Vladut, Popa Viorica si Tilica Alina
pacinetii acestora pe o singura coloana*/

with Pacienti as(


select string_agg( CAST(numepacient AS VARCHAR), '; 'ORDER BY
CAST( numepacient AS VARCHAR))AS pacienti, medic
from echipe_medicale e

24
inner join pacienti p on e.id_cadru=p.medic
where nume_cadru='Pop Vladut'
group by medic
union
select string_agg( CAST(numepacient AS VARCHAR), '; 'ORDER BY
CAST( numepacient AS VARCHAR))AS pacienti, medic
from echipe_medicale e
inner join pacienti p on e.id_cadru=p.medic
where nume_cadru='Popa Viorica'
group by medic
union
select string_agg( CAST(numepacient AS VARCHAR), '; 'ORDER BY
CAST( numepacient AS VARCHAR))AS pacienti, medic
from echipe_medicale e
inner join pacienti p on e.id_cadru=p.medic
where nume_cadru='Tilica Alina'
group by medic)
select nume_cadru, pacienti
from echipe_medicale e
left outer join Pacienti p1 on e.id_cadru=p1.medic
where nume_cadru='Pop Vladut' or nume_cadru='Popa Viorica' or
nume_cadru='Tilica Alina'

Interogări (pseudo) recursive:


/*4. Afisati intr o singura linie toate echipamenetele, precum si numarul
acestora dontr-o institutie*/
with recursive
h(echipamente, institutie) as(
select string_agg( CAST(denumireechipament AS VARCHAR),

25
'; 'ORDER BY CAST( denumireechipament AS VARCHAR))AS
echipemente_total, institutie
FROM echipamente
group by institutie),
Numar as(
select row_number() OVER (PARTITION BY institutie ORDER BY
institutie) AS echipamente, echipamente.*
from echipamente
order by echipamente desc)
select h.institutie, h.echipamente, max(numar.echipamente) as numar
from h
inner join numar on h.institutie=numar.institutie
group by h.institutie, h.echipamente
order by institutie

Tidyverse:

#1.Cati angajati au programul intre orele 8-16(sa se scrie separat cati


medici, cati asistenti si cati chirurgi)?

ex1<-echipe_medicale %>%
group_by(functie) %>%
filter(program=='08:00-16:00') %>%
summarise(n=n())

26
#2. Care sunt pacientii consultati de catre medical care l a consultat pe
pacientul Toma Silvia?

ex2<-pacienti %>%
filter(medic %in%
(
pacienti%>%
filter(numepacient=='Toma Silvia') %>%
pull(medic)))%>%
select(numepacient)

#3. Afisati pentru medicii Pop Vladut, Popa Viorica si pentru Tilica Alina
pe o singura coloana, pacinetii acestora

Pacienti_Pop_Vladut<-echipe_medicale%>%
inner_join(pacienti, by = c('id_cadru'='medic'))%>%
group_by(id_cadru) %>%
filter(nume_cadru=='Pop Vladut') %>%
summarise(pacienti= paste(numepacient, collapse = '; '))
Pacienti_Popa_Viorica<-echipe_medicale%>%
inner_join(pacienti, by = c('id_cadru'='medic'))%>%
group_by(id_cadru) %>%
filter(nume_cadru=='Popa Viorica') %>%
summarise(pacienti= paste(numepacient, collapse = '; '))

27
Pacienti_Tilica_Alina<-echipe_medicale%>%
inner_join(pacienti, by = c('id_cadru'='medic'))%>%
group_by(id_cadru) %>%
filter(nume_cadru=='Tilica Alina') %>%
summarise(pacienti= paste(numepacient, collapse = '; '))
Pacienti<-union_all(Pacienti_Pop_Vladut, Pacienti_Popa_Viorica)
TotiPacientii<-union_all(Pacienti, Pacienti_Tilica_Alina )
ex3<-echipe_medicale%>%
filter(nume_cadru=='Pop Vladut' | nume_cadru=='Popa Viorica' |
nume_cadru=='Tilica Alina') %>%
inner_join(TotiPacientii, by = c('id_cadru'='id_cadru'))%>%
select(nume_cadru, pacienti)

# 4. Afisati intr o singura linie toate echipamenetele, precum si numarul


acestora dontr-o institutie

echipamenteTot<-echipamente%>%
group_by(institutie) %>%
summarise(TotalEchipamente=paste(denumireechipament, collapse = '; '))
numar<-echipamente%>%
group_by(institutie)%>%
mutate(nr=row_number()) %>%
ungroup()%>%
arrange(desc(nr)) %>%
group_by(institutie) %>%
summarise(Nr_echipamente=max(nr))
ex4<-echipamenteTot%>%
inner_join(numar, by = c('institutie'='institutie'))

28
Gherca Bianca

Sql

/*1.Care sunt pacientii internati pe data de 14/10/2018?*/


select numepacient ,data_consultare
from pacienti
where data_consultare='2018/10/14' AND internat='DA'
GROUP BY numepacient,data_consultare

/*2.Realizati un top al medicilor cu cei mai multi pacienti */


select medic, nume_cadru, count(*) as nrpacienti
from pacienti
inner join echipe_medicale on pacienti.medic=echipe_medicale.id_cadru
group by medic,nume_cadru
HAVING COUNT(*) IN (
SELECT COUNT(*) AS nrpacienti
from pacienti
inner join echipe_medicale on pacienti.medic=echipe_medicale.id_cadru
group by medic, nume_cadru
order by 1 desc
)
order by 3 desc

29
/*3. Ordonati pacientii in functie de numarul de zile in care au fost
internati*/
WITH
dataInternare AS (SELECT data_internare,codpacient
FROM internari
GROUP BY data_internare,codpacient),
dataExternare AS (SELECT data_externare,codpacient
FROM internari
GROUP BY data_externare,codpacient )
SELECT numepacient,dataInternare,dataInternare,extract(day from
dataExternare.data_externare)-extract(day from dataInternare.data_internare) as
zile_Internat
FROM pacienti
left JOIN dataInternare ON pacienti.cod_pacient =
dataInternare.codpacient
left JOIN dataExternare ON pacienti.cod_pacient =
dataExternare.codpacient
WHERE dataInternare is not NULL
ORDER BY 4 desc

/*4. Extrageti toti medicii care il au sef de garda pe medicul Pop Vladut*/

WITH RECURSIVE subordinates AS(


SELECT medicsefdegarda,
medicdegarda
from liniidegarda
inner join echipe_medicale on
liniidegarda.medicsefdegarda=echipe_medicale.id_cadru
where nume_cadru='Pop Vladut'
UNION
SELECT l.medicsefdegarda,
30
l.medicdegarda
from liniidegarda l
INNER JOIN subordinates s ON s.medicsefdegarda=l.medicsefdegarda

) SELECT nume_cadru
FROM subordinates
inner join echipe_medicale on
subordinates.medicdegarda=echipe_medicale.id_cadru

Tidyverse

#*/1.Care sunt pacientii internati pe data de 14/10/2018?


ex1<- pacienti %>%
group_by(numepacient)%>%
filter (data_consultare == '2018/10/14' & internat=='DA')
#*/2.Realizati un top al medicilor cu cei mai multi pacienti
ex2<-pacienti%>%
inner_join(echipe_medicale, by = c('medic'='id_cadru'))%>%
group_by(medic, nume_cadru) %>%
summarise(nrpacienti=n())%>%
filter(nrpacienti %in%
(
pacienti%>%
inner_join(echipe_medicale, by = c('medic'='id_cadru'))%>%
group_by(medic, nume_cadru)%>%
summarise(nrpacienti=n())%>%
arrange(desc(nrpacienti))%>%
pull(nrpacienti)))%>%
31
select(medic, nume_cadru, nrpacienti)%>%
arrange(desc(nrpacienti))
#*/3.Ordonati pacientii in functie de numarul de zile internati

ex3<-internari%>%
inner_join(pacienti,by=c('codpacient'='cod_pacient'))%>%
select(codpacient,numepacient,data_internare,data_externare)
%>%
mutate(zile_internat=data_externare-data_internare)%>%

arrange(desc(zile_internat))

#*/4.Extrageti toti medicii care il au sef de garda pe medicul Pop Vladut


subordonati<-liniidegarda%>%
inner_join(echipe_medicale, by = c('medicsefdegarda'='id_cadru'))%>
%
filter(nume_cadru=='Pop Vladut')
echipe_medicale%>%
inner_join(subordonati, by = c('id_cadru'='medicdegarda'))%>%
transmute(Medicgarda=nume_cadru.x )

32
Olaru Amalia Gabriela

SQL:
/* 1.Sa se afiseze retetele care expira dupa data de 1 ianuarie 2021.*/
select id_reteta
from retete
where data_expirare > '01/01/2021'
group by id_reteta
order by id_reteta

/*2.Care sunt institutiile/partenerii cu cele mai multe echipamente?*/


select nume, count(*) as institutie
from parteneri
group by nume
having count(*)>= ALL(
select count(*)
from parteneri
group by id_institutie)
order by 1

/*3.Care sunt retetele care au procentul de compensare mai mare decat


"1007A"?*/

WITH reteta_1007A AS (
SELECT *
from retete
where id_reteta='1007A')
select re.id_reteta

33
from retete re
where re.procentcompensare > (select procentcompensare
from reteta_1007A)

/*4.Extrageti toti pacientii medicului Tilica Alina*/

WITH RECURSIVE pacient AS (


select numepacient, cod_pacient
from pacienti
inner join echipe_medicale e on pacienti.medic=e.id_cadru
where nume_cadru = 'Tilica Alina'
UNION
select p.numepacient, p.cod_pacient
from pacienti p
inner join pacient m on m.numepacient=p.numepacient)
select numepacient
from pacient
group by numepacient, cod_pacient
order by 1

Tidyverse:
#/* 1.Sa se afiseze retetele care expira dupa data de 1 ianuarie 2021.*/

ex1 <- retete %>%


group_by(id_reteta)%>%
filter(data_expirare > '2021-01-01')

34
#/*2.Care sunt institutiile/partenerii cu cele mai multe echipamente?*/
ex2 <- parteneri %>%
select (nume) %>%
group_by(nume) %>%
summarise (institutie = n()) %>%
ungroup() %>%
top_n(1, institutie)

#3.Care sunt retetele care au procentul de compensare mai mare decat


1007A?

reteta_1007A<-retete%>%
filter(id_reteta=='1007A')
retete%>%
filter(procentcompensare >
(reteta_1007A%>%
pull(procentcompensare)

))%>%
select(id_reteta)

4. Extrageti toti pacientii medicului Tilica Alina.

cadru<-pacienti%>%
inner_join(echipe_medicale, by = c('medic'='id_cadru'))%>%
filter(nume_cadru=='Tilica Alina') %>%
select(numepacient, cod_pacient)
pacient<-pacienti%>%

35
inner_join(cadru, by = c('numepacient'='numepacient'))%>%
select(numepacient)

36

S-ar putea să vă placă și