-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprocedures.sql
294 lines (173 loc) · 9.86 KB
/
procedures.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
start transaction;
delimiter //
drop procedure if exists nowy_lekarz; //
drop procedure if exists nowa_pielegniarka; //
drop procedure if exists nowa_upowazniona; //
drop procedure if exists nowy_pacjent; //
drop procedure if exists nowe_zarobki; //
drop procedure if exists zmien_zarobki_lekarza; //
drop procedure if exists zmien_zarobki_pielegniarki; //
drop procedure if exists nowe_badanie; //
drop procedure if exists usun_pacjenta; //
/*-----------------------------------------------------------*/
create procedure nowy_lekarz(imie varchar(30), drugie_imie varchar(30), nazwisko varchar(30), pesel2 bigint,
telefon varchar(14), email varchar(50), data_urodzenia date, ulica varchar(30), kod_pocztowy varchar(6),
miasto varchar(30), panstwo varchar(30), specjalizacja varchar(40), stopien varchar(40), numer_zawodu int(7),
data_zatrudnienia date, oddzial_id int(2))
begin
declare ID_P int (5);
declare ID_A int (5);
insert into PRACOWNICY(IMIE, DRUGIE_IMIE, NAZWISKO, PESEL, TELEFON, EMAIL)
values (imie, drugie_imie, nazwisko, pesel2, telefon, email);
set ID_P = (select PRACOWNIK_ID from PRACOWNICY where PESEL = pesel2);
insert into ADRESY_PRACOWNIKOW(PRACOWNIK_ID, ULICA, KOD_POCZTOWY, MIASTO, PANSTWO)
values (ID_P, ulica, kod_pocztowy, miasto, panstwo);
set ID_A = (select ADRES_PRACOWNIKA_ID from ADRESY_PRACOWNIKOW where PRACOWNIK_ID = ID_P);
insert into LEKARZE(LEKARZ_ID, DATA_URODZENIA, ADRES_LEKARZA_ID, SPECJALIZACJA, STOPIEN, NUMER_ZAWODU,
DATA_ZATRUDNIENIA, ODDZIAL_ID)
values (ID_P, data_urodzenia, ID_A, specjalizacja, stopien, numer_zawodu, data_zatrudnienia, oddzial_id);
end; //
/*-----------------------------------------------------------*/
create procedure nowa_pielegniarka(imie varchar(30), drugie_imie varchar(30), nazwisko varchar(30), pesel2 bigint,
telefon varchar(14), email varchar(50), data_urodzenia date, ulica varchar(30), kod_pocztowy varchar(6),
miasto varchar(30), panstwo varchar(30), data_zatrudnienia date, oddzial_id int(2))
begin
declare ID_P int (5);
declare ID_A int (5);
insert into PRACOWNICY(IMIE, DRUGIE_IMIE, NAZWISKO, PESEL, TELEFON, EMAIL)
values (imie, drugie_imie, nazwisko, pesel2, telefon, email);
set ID_P = (select PRACOWNIK_ID from PRACOWNICY where PESEL = pesel2);
insert into ADRESY_PRACOWNIKOW(PRACOWNIK_ID, ULICA, KOD_POCZTOWY, MIASTO, PANSTWO)
values (ID_P, ulica, kod_pocztowy, miasto, panstwo);
set ID_A = (select ADRES_PRACOWNIKA_ID from ADRESY_PRACOWNIKOW where PRACOWNIK_ID = ID_P);
insert into PIELEGNIARKI(PIELEGNIARKA_ID, DATA_URODZENIA, ADRES_PIELEGNIARKI_ID, DATA_ZATRUDNIENIA, ODDZIAL_ID)
values (ID_P, data_urodzenia, ID_A, data_zatrudnienia, oddzial_id);
end; //
/*-----------------------------------------------------------*/
create procedure nowa_upowazniona(relacja varchar(20), imie varchar(30), drugie_imie varchar(30), nazwisko varchar(30),
pesel bigint, ulica varchar(30), kod_pocztowy varchar(6), miasto varchar(30), panstwo varchar(30),telefon varchar(14),
email varchar(20))
begin
insert into OSOBA_UPOWAZNIONA(RELACJA, IMIE, DRUGIE_IMIE, NAZWISKO, PESEL, ULICA, KOD_POCZTOWY, MIASTO, PANSTWO,
TELEFON, EMAIL)
values (relacja, imie, drugie_imie, nazwisko, pesel, ulica, kod_pocztowy, miasto, panstwo, telefon, email);
end; //
/*-----------------------------------------------------------*/
create procedure nowy_pacjent(imie varchar(30), drugie_imie varchar(30), nazwisko varchar(30), pesel2 bigint,
data_urodzenia date, ulica varchar(30), kod_pocztowy varchar(6), miasto varchar(30), panstwo varchar(30),
ubezpieczenie tinyint(1), data_przyjecia date, zgoda_przyjecia tinyint(1), podmiot_kierujacy varchar(15),
waga varchar(5), wzrost varchar(5), alergie tinyint(1), opis_alergii text, telefon varchar(14),
email varchar(20), pesel_lekarza bigint, pesel_upowaznionej bigint)
begin
declare ID_P int(5);
declare ID_L int(5);
declare ID_U int(5);
set ID_L = (select PRACOWNIK_ID from PRACOWNICY where PESEL = pesel_lekarza);
set ID_U = (select UPOWAZNIONA_ID from OSOBA_UPOWAZNIONA where PESEL = pesel_upowaznionej);
insert into PACJENCI(IMIE, DRUGIE_IMIE, NAZWISKO, PESEL, DATA_URODZENIA, UBEZPIECZENIE, LEKARZ_ID, DATA_PRZYJECIA,
ZGODA_PRZYJECIA, PODMIOT_KIERUJACY, WAGA, WZROST, ALERGIE, OPIS_ALERGII, UPOWAZNIONA_ID, TELEFON, EMAIL)
values (imie, drugie_imie, nazwisko, pesel2, data_urodzenia, ubezpieczenie, ID_L, data_przyjecia, zgoda_przyjecia,
podmiot_kierujacy, waga, wzrost, alergie, opis_alergii, ID_U, telefon, email);
set ID_P = (select PACJENT_ID from PACJENCI where PESEL = pesel2);
insert into ADRESY_PACJENTOW(PACJENT_ID, ULICA, KOD_POCZTOWY, MIASTO, PANSTWO)
values (ID_P, ulica, kod_pocztowy, miasto, panstwo);
end; //
/*-----------------------------------------------------------*/
create procedure nowe_zarobki(pesel1 bigint, pensja int(6), premia int(3))
begin
declare ID_P int(5);
set ID_P = (select PRACOWNIK_ID from PRACOWNICY where PESEL = pesel1);
insert into WIDELKI(PRACOWNIK_ID, PENSJA, PREMIA)
values(ID_P, pensja, premia);
end; //
/*-----------------------------------------------------------*/
create procedure zmien_zarobki_lekarza(pesel2 bigint, pensja_nowa int(6), premia_nowa int(3))
begin
declare ID int(5);
declare ID_newP int(5);
declare ID_A int(5);
declare ID_newA int(5);
declare ID_P int(5);
declare ID_AA int(5);
set ID = (select PRACOWNIK_ID from PRACOWNICY where PESEL = pesel2);
set ID_newP = (select PRACOWNIK_ID from PRACOWNICY order by PRACOWNIK_ID desc limit 1);
set SQL_SAFE_UPDATES = 0;
create temporary table TMP engine=memory select * from PRACOWNICY where PRACOWNIK_ID = ID;
update TMP set PRACOWNIK_ID = (ID_newP + 1);
insert into PRACOWNICY select * from TMP where PRACOWNIK_ID = (ID_newP + 1);
drop temporary table if exists TMP;
set ID_A = (select ADRES_PRACOWNIKA_ID from ADRESY_PRACOWNIKOW where PRACOWNIK_ID = ID);
set ID_newA = (select ADRES_PRACOWNIKA_ID from ADRESY_PRACOWNIKOW order by ADRES_PRACOWNIKA_ID desc limit 1);
set ID_P = (select PRACOWNIK_ID from PRACOWNICY order by PRACOWNIK_ID desc limit 1);
create temporary table TMP2 engine=memory select * from ADRESY_PRACOWNIKOW where ADRES_PRACOWNIKA_ID = ID_A;
update TMP2 set ADRES_PRACOWNIKA_ID = (ID_newA + 1);
insert into ADRESY_PRACOWNIKOW select * from TMP2 where ADRES_PRACOWNIKA_ID = (ID_newA + 1);
drop temporary table if exists TMP2;
set ID_AA = (select ADRES_PRACOWNIKA_ID from ADRESY_PRACOWNIKOW order by ADRES_PRACOWNIKA_ID desc limit 1);
update ADRESY_PRACOWNIKOW set PRACOWNIK_ID = ID_P where ADRES_PRACOWNIKA_ID = ID_AA;
create temporary table TMP3 engine=memory select * from LEKARZE where LEKARZ_ID = ID;
update TMP3 set LEKARZ_ID = ID_P;
insert into LEKARZE select * from TMP3 where LEKARZ_ID = ID_P;
drop temporary table if exists TMP3;
update LEKARZE set ADRES_LEKARZA_ID = ID_AA where LEKARZ_ID = ID_P;
update WIDELKI set AKTUALNOSC = 'nieaktualne' where PRACOWNIK_ID = ID;
insert into WIDELKI(PRACOWNIK_ID, PENSJA, PREMIA)
values(ID_P, pensja_nowa, premia_nowa);
end; //
/*-----------------------------------------------------------*/
create procedure zmien_zarobki_pielegniarki(pesel2 bigint, pensja_nowa int(6), premia_nowa int(3))
begin
declare ID int(5);
declare ID_newP int(5);
declare ID_A int(5);
declare ID_newA int(5);
declare ID_P int(5);
declare ID_AA int(5);
set ID = (select PRACOWNIK_ID from PRACOWNICY where PESEL = pesel2);
set ID_newP = (select PRACOWNIK_ID from PRACOWNICY order by PRACOWNIK_ID desc limit 1);
set SQL_SAFE_UPDATES = 0;
create temporary table TMP engine=memory select * from PRACOWNICY where PRACOWNIK_ID = ID;
update TMP set PRACOWNIK_ID = (ID_newP + 1);
insert into PRACOWNICY select * from TMP where PRACOWNIK_ID = (ID_newP + 1);
drop temporary table if exists TMP;
set ID_A = (select ADRES_PRACOWNIKA_ID from ADRESY_PRACOWNIKOW where PRACOWNIK_ID = ID);
set ID_newA = (select ADRES_PRACOWNIKA_ID from ADRESY_PRACOWNIKOW order by ADRES_PRACOWNIKA_ID desc limit 1);
set ID_P = (select PRACOWNIK_ID from PRACOWNICY order by PRACOWNIK_ID desc limit 1);
create temporary table TMP2 engine=memory select * from ADRESY_PRACOWNIKOW where ADRES_PRACOWNIKA_ID = ID_A;
update TMP2 set ADRES_PRACOWNIKA_ID = (ID_newA + 1);
insert into ADRESY_PRACOWNIKOW select * from TMP2 where ADRES_PRACOWNIKA_ID = (ID_newA + 1);
drop temporary table if exists TMP2;
set ID_AA = (select ADRES_PRACOWNIKA_ID from ADRESY_PRACOWNIKOW order by ADRES_PRACOWNIKA_ID desc limit 1);
update ADRESY_PRACOWNIKOW set PRACOWNIK_ID = ID_P where ADRES_PRACOWNIKA_ID = ID_AA;
create temporary table TMP3 engine=memory select * from PIELEGNIARKI where PIELEGNIARKA_ID = ID;
update TMP3 set PIELEGNIARKA_ID = ID_P;
insert into PIELEGNIARKI select * from TMP3 where PIELEGNIARKA_ID = ID_P;
drop temporary table if exists TMP3;
update PIELEGNIARKI set ADRES_PIELEGNIARKI_ID = ID_AA where PIELEGNIARKA_ID = ID_P;
update WIDELKI set AKTUALNOSC = 'nieaktualne' where PRACOWNIK_ID = ID;
insert into WIDELKI(PRACOWNIK_ID, PENSJA, PREMIA)
values(ID_P, pensja_nowa, premia_nowa);
end; //
/*-----------------------------------------------------------*/
create procedure nowe_badanie(pesel_lekarz bigint, pesel_pacjent bigint, data_badania date, tryb_przyjecia varchar(7),
rozpoznanie text, icd10 varchar(10))
begin
declare ID_L int(5);
declare ID_P int(5);
set ID_L = (select PRACOWNIK_ID from PRACOWNICY PR where PR.PESEL = pesel_lekarz);
set ID_P = (select PACJENT_ID from PACJENCI P where P.PESEL = pesel_pacjent);
if (curdate() <= data_badania) then
insert into BADANIA(LEKARZ_ID, PACJENT_ID, DATA_BADANIA, TRYB_PRZYJECIA, ROZPOZNANIE, ICD10_ID)
values (ID_L, ID_P, data_badania, tryb_przyjecia, rozpoznanie, icd10);
else select 'Error: Nie można zapisać badania na datę minioną';
end if;
end; //
/*-----------------------------------------------------------*/
create procedure usun_pacjenta(pesel2 bigint)
begin
declare ID int(5);
set ID = (select PACJENT_ID from PACJENCI where PESEL = pesel2);
update PACJENCI set CZY_PACJENT = 'Nie' where PACJENT_ID = ID;
end;//
delimiter ;
commit;