4.1.41 Номери кабінетів для доктора, де у нього йде прийом
CREATE PROCEDURE [room_num_for_doc_id_and_day] (@ id varchar (50), @ id_day int) distinct кабинет.номер_кабинетакабинет inner join розклад on распісаніе.номер_кабінета = кабинет.номер_кабинетарасписание.логин_врача = @ id and расписание.идентификатор_дня_недели = @ id_day
4.1.42 Розклад по імені доктора
CREATE PROC [rasp_for_doctor_name] (@ doctor_name varchar (50)) @ doctor_login varchar (50); @ doctor_login = врач.логин_врачаврачврач.имя = @ doctor_nameрасписание.идентификатор_расписания, названіе_дня_неделі, время_начала, смена.время_конца, кабінет.номер_кабінета, врач.імя from врачjoin розклад on врач.логін_врача = распісаніе.логін_врачаjoin зміна on смена.ідентіфікатор_смени = расписание.идентификатор_сменыjoin кабінет on распісаніе.номер_кабінета = кабінет.номер_кабінетаjoin день_неделі on расписание.идентификатор_дня_недели = день_недели.идентификатор_дня_неделиврач.логин_врача = @ doctor_login
4.1.43 Робочі зміни для доктора за його логіну, днем ​​тижня і номеру кабінету
CREATE PROCEDURE [smena_for_doc_id_and_day_and_room] (@ id varchar (50), @ id_day int, @ room int) ідентіфікатор_смени, идентификатор_расписаниякабинет inner join розклад on распісаніе.номер_кабінета = кабинет.номер_кабинетарасписание.логин_врача = @ id and = @ Room
4.1.44 Робочі зміни для доктора за його логіну та дню тижня
CREATE PROCEDURE [smena_for_day_and_doctor] (@ day int, @ doc_login varchar (50)) смена.ідентіфікатор_смени сменасмена.идентификатор_смены not = @ Day and распісаніе.логін_врача = @ doc_login
)
4.1.45 Вставка рядка розкладу
CREATEPROCEDURE [insert_into_table] (@ doc_idvarchar (50), @ num_cabint, @ day_idint, @ smenaint) into розклад @ Num_cab, @ day_id, @ smena, NEWID ())
4.1.46 Загальний розклад
CREATE PROCEDURE [get_table_id] расписание.идентификатор_расписания, смена.время_начала, смена.время_конца, врач.длітельность_пріема, идентификатор_дня_неделирасписание inner join зміна on смена.ідентіфікатор_смени = расписание.идентификатор_сменыjoin лікар on врач.логін_врача = распісаніе.логін_врача by ідентіфікатор_распісанія
4.1.47 Вилучення рядка розкладу
CREATE PROCEDURE [delete_table] (@ id int) расписаниерасписание.идентификатор_расписания = @ id
4.1.48 Кількість відпрацьованих лікарем годин на тиждень
CREATE PROCEDURE [doctor_work_time] врач.імя, врач.номер_участка, AS 'колічествочасов' спеціальність inner join лікар on специальность.идентификатор_специальности = врач.идентификатор_специальностиjoin розклад on распісаніе.логін_врача = врач.логін_врачаjoin зміна on смена.ідентіфікатор_смени = расписание.идентификатор_сменыby врач.імя, [Кількість годин] desc
4.2 Опис тригерів
.2.1 Тригер insteadofinsertдля таблиці розклад
При додаванні рядка розкладу перевіряється чи є кабінет з вставляемой рядка в довіднику кабінет (таблиця кабінет). Якщо його немає, то даний кабінет додається в довідник. Впротивномслучаепроисходитобычноедобавление.trigger [dbo]. [Yyy] [dbo]. [Розклад] of insert @ numint @ num = inserted.номер_кабінетаinserted (not exists
)
) into кабінет values ​​(@ num,'', NEWID ()) розклад (логін_врача, номер_кабінета, ідентіфікатор_дня_неделі, ідентіфікатор_дня_неделі, ідентіфікатор_смени, msrepl_tran_versioninserted
.2.2 Триггерinsteadofdeleteдлятаблицыпациент
При видаленні модератором пацієнта (тільки він володіє такими правами) стираються всі записи з таблиці відвідування, що стосуються видаляється паціента.trigger [dbo]. [patient_delete] on [dbo]. [пацієнт] of delete @ id varchar (50) відвідування set логін_паціента = NULLпосещение.идентификатор_посещенияin
(идентификатор_посещенияпациент innerjoin відвідування onпаціент.логін_паціента = посещеніе.логін_паціентаjoin deleted on deleted.логін_паціента = пациент.логин_пациента.логин_пациента = посещеніе.логін_паціента
) @ id = логин_пациентаdeletedпациентпациент.логин_пациента = @ id
5.Інтерфейс користувача
Інтерфейс користувача здійснено за допомогою програмних засобів середовища разработкіvisualstudio 2010 на мові програмування C # за допомогою інтерфейсу програмування додатків windowsforms.