Автоматизированная система для работы поликлиники
Проектирование автоматизированной системы работы поликлиники: постановка задач, расписаний, концептуальных схем и элементов, процедур и программной реализации взаимодействия врача, пациента, участков, лабораторий. Интерфейс пользователей программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | отчет по практике |
Язык | русский |
Дата добавления | 07.08.2012 |
Размер файла | 4,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
ГУАП КАФЕДРА №43
ОТЧЕТ
О КУРСОВОЙ РАБОТЕ
по курсу: РАСПРЕДЕЛЕННЫЕ БАЗЫ ДАННЫХ
СТУДЕНТ ГР. 4831 Н.М.Ткачев
Доц. к.т.н А.В, Бржезовский
Санкт-Петербург 2012
Содержание
- 1. Описание предметной области
- 1.1 Регистрация больных и пациентов
- 1.2 Ознакомление со справочной информацией
- 1.3 Запись на прием к врачу
- 1.4 Просмотр пациентом, сделанных врачом назначений
- 1.5 Редактирование пациентом или врачом информации о себе
- 1.6 Заполнение врачом результатов осмотра
- 1.7 Выписка врачом рецептов, направлений на анализ, а также заполнение результатов анализов для своих пациентов
- 1.8 Составление расписания
- 2. Требования к системе
- 2.1 Требование к системе в целом
- 2.2 Требования к функциям (задачам)
- 2.3 Требование к обеспечению
- 3. Концептуальная модель БД
- 4. Физическая модель базы данных
- 4.1 Описание хранимых процедур
- 4.1.1 Вставка рецепта
- 4.1.2 Обновление данных о посещении
- 4.1.3 Привязка пациента к талончику
- 4.1.4 Находит максимальную дату среди талонов
- 4.1.5 Добавление талончика
- 4.1.6 определяет существование логина и пароля пациента в системе
- 4.1.7 Обновляет направление на анализ
- 4.1.8 Просмотр анализов пациента
- 4.1.9 Добавление нового направления на анализ
- 4.1.10 Удаление направления на анализ
- 4.1.11 Возвращает типы анализов для посещения
- 4.1.12 Возвращает даты направления на анализы для посещения
- 4.1.13 Направления на анализы для пациента
- 4.1.14 Типы анализов для для посещения
- 4.1.15 Результаты анализов для талончика по типу и дате
- 4.1.16 Даты направления на анализ для талончика по типу посещения и дате
- 4.1.17 Даты направлений на анализы по идентификатору талончика и типу анализа
- 4.1.18 Информация о выписанных лекарствах для пациента
- 4.1.19 Возвращает пациентов на участке
- 4.1.20 Номер участка по имени пациента
- 4.1.21 Пациенты, относящиеся к врачу территориально
- 4.1.22 Возвращает информацию о посещениях для пациента
- 4.1.23 Возвращает даты и времена посещений для доктора и пациента
- 4.1.24 Возвращает информацию о посещениях для доктора и пациента
- 4.1.25 Свободные талончики для доктора на текушую дату
- 4.1.26 Все талончики для доктора на текушую дату
- 4.1.27 Все талончики для доктора
- 4.1.28 Все занятые талончики для доктора
- 4.1.29 Времена посещений для врача и пациента на конкретную дату
- 4.1.30 Посещения пациента на конкретную дату
- 4.1.31 Длительность приема по идентификатору посещения
- 4.1.32 Количество талончиков для доктора
- 4.1.33 Лекарства, выписанные врачом
- 4.1.34 Отчёт работы врачей в поликлиннике
- 4.1.35 Поиск врачей по специальности и участку
- 4.1.36 Поиск логина и пароля врача в системе
- 4.1.37 Поиск специальностей врачей на участке
- 4.1.38 Обновление информации о враче
- 4.1.39 Номер участка по улице
- 4.1.40 Свободные кабинеты для дня недели и смены
- 4.1.41 Номера кабинетов для доктора, где у него идёт прием
- 4.1.42 Расписание по имени доктора
- 4.1.43 Рабочие смены для доктора по его логину, дню недели и номеру кабинета
- 4.1.44 Рабочие смены для доктора по его логину и дню недели
- 4.1.45 Вставка строки расписания
- 4.1.46 Общее расписание
- 4.1.47 Удаления строки расписания
- 4.1.48 Количество отработанных врачом часов в неделю
- 4.2 Описание триггеров
- 4.2.1 Триггер instead of insert для таблицы расписание
- 4.2.2 Триггер instead of delete для таблицы пациент
- 5.Интерфейс пользователя
- 5.1 Главное окно приложения
- 5.2 гостевое меню
- 5.3 Меню пациента
- 5.4 Меню врача
- 5.5 Меню модератора
- 6.Репликация данных
- 7.Хранилище и отчеты
- 7.1. Схема хранилища
- 7.2 Отчеты
- Список литературы
- 1. Описание предметной области
- Данная курсовая работа посвящена разработке автоматизированной системы для работы поликлиники. Основные задачи, которые решает автоматизированная система:
· Регистрация больных и пациентов
· Ознакомление со справочной информацией
· Запись на прием к врачу
· Просмотр пациентом, сделанных врачом назначений
· Редактирование пациентом или врачом информации о себе
· Заполнение врачом результатов осмотра
· Выписка врачом рецептов, направлений на анализ, а также заполнение результатов анализов для своих пациентов
· Составление расписания
1.1 Регистрация больных и пациентов
Пользователь, если у него нет аккаунта в информационной системе, может зарегистрироваться, введя свои данные. Удаление аккаунта может осуществить модератор. Регистрацию врачей может осуществлять только модератор.
1.2 Ознакомление со справочной информацией
Данная информационная система позволяет знакомиться со следующей информацией, даже, если у пользователя нет аккаунта в информационной системе:
-просмотр расписания
-просмотр пациентов у врача
-просмотр всех врачей (по специальности и по участку и специальности)
-выписанные врачом лекарства
-нагрузка врача(часов в неделю)
-отчет о работе врачей за весь период работы в поликлинике
-статистика посещений пациента
-просмотр пациентов по участкам
-выписанные лекарства для пациента
-выписанные анализы для пациента
1.3 Запись на прием к врачу
поликлиника автоматизированный интерфейс
ьзователь может забронировать любой свободный талончик. Сразу после этого талончик пропадет в данном меню, а в личном кабинете пациента и врача появится запись об этом талончике.
1.4 Просмотр пациентом, сделанных врачом назначений
В личном кабинете пациента отображается информация о выписанных лекарствах, направлениях на анализы.
1.5 Редактирование пациентом или врачом информации о себе
В личном кабинете врача/пациента отображается личная информация. Разрешается её редактировать. Есть возможность редактирования логина и пароля входа.
1.6 Заполнение врачом результатов осмотра
После того, как пациент пришёл на прием, врач заносит результат осмотра в информационную систему, а также заполняет рекомендации по лечению.
1.7 Выписка врачом рецептов, направлений на анализ, а также заполнение результатов анализов для своих пациентов.
Врач имеет возможность выписать/заполнить направление на анализ, выписать рецепт по результатам посещения.
1.8 Составление расписания
Модератор осуществляет создание/редактирование расписания. Учитываются следующие ограничения:
-набор полей день недели, смена, кабинет уникален
-набор полей врач, день недели, смена уникален
После добавления строки расписания, в системе генерируются талончики на 10 дней вперед для этой строки.
2. Требования к системе
2.1 Требование к системе в целом
Разрабатываемая системе должна
Иметь возможность для технического обслуживания квалифицированным персоналом
Иметь возможность осуществления ремонта при возникновении неполадок в работе
Должна быть уникальной и независимой в технических решениях по сравнению с автоматизированными системами сторонних разработчиков.
Должна осуществлять работу в соответствии с действующими стандартами, принятыми в предметной области работы автоматизированной системы
Система должна быть универсальной для всех филиалов и иметь возможности установки копий на рабочие станции операторов.
Эксплуатация программного обеспечения не должна наносить вред как эксплуатирующему персоналу так и технике, на которой предполагается эксплуатация программного обеспечения.
Программный комплекс должен оснащаться сопутствующей технической документации и иметь возможность обучения работников навыкам использования автоматизированной системе на рабочих местах
2.2 Требования к функциям (задачам)
· Программа должна выполнять возложенные на неё задачи на филиалах эксплуатирующего предприятия и иметь возможность связи по информационным каналам с центральным офисом
· Каждая выполняемая в автоматизированной системе операция не должна иметь слишком больших временных затрат на её исполнение.
· Все задачи, решаемые системой должны быть решены быстро и корректно
2.3 Требование к обеспечению
· Разрабатываемая система должна реализовать свои задачи с применением таких средств, как СУБД MSSQL 2008 и операционная система Windows7
· В процессе эксплуатации программа не должна требовать установки дополнительного программного обеспечения, кроме указанных ранее.
· Программа не должна терять данные при возникновениях в неисправностях, как в программной так и в аппаратной составляющей автоматизированной системы.
3. Концептуальная модель БД
Концептуальная модель разработана в среде PowerDesigner. Она представляет собой систему из 16 сущностей.
Рис 3.1 Концептуальная модель базы данных
4. Физическая модель базы данных
Физическая модель представлена на рис. 4.1. Модель выполнена среде Powerdesigner.
Рис 4.1 Физическая модель базы данных
4.1 Описание хранимых процедур
4.1.1 Вставка рецепта
CREATE PROCEDURE [add_recept_to_ticket](@ticket_id int,@drug_id int,@drug_count int)
AS
BEGIN
insert into рецепт
values(@ticket_id, @drug_id, @drug_count,NEWID())
END
4.1.2 Обновление данных о посещении
CREATE PROCEDURE [update_ticket_type_zhalob_diagnoz_lechenie](@id int, @type int, @zhalob varchar(max),@diagnoz varchar(max),@lechenie varchar(max))
AS
BEGIN
update посещение
set посещение.тип_посещения = @type,
посещение.жалобы = @zhalob,
посещение.диагноз = @diagnoz,
посещение.лечение = @lechenie
where посещение.идентификатор_посещения = @id
END
4.1.3 Привязка пациента к талончику
CREATE PROCEDURE [update_ticket_patient_login](@patient_login varchar(50),@ticket_id int)
AS
BEGIN
update посещение
set логин_пациента = @patient_login
where идентификатор_посещения = @ticket_id
END
4.1.4 Находит максимальную дату среди талонов
CREATE PROCEDURE [ticket_max_date]
AS
BEGIN
declare @date datetime
if exists(select *
from посещение)
begin
select @date = MAX(посещение.дата_приема)
from посещение
end
else
begin
set @date = GETDATE()-DAY(0)
end
if(@date<getdate())
begin
set @date = getdate()-day(0)
end
select @date
END
4.1.5 Добавление талончика
CREATE PROCEDURE [insert_into_ticket](@table_id int,@ticket_time time(7),@date date)
AS
BEGIN
insert into посещение(идентификатор_расписания,время_приема,дата_приема) values(@table_id,@ticket_time,@date)
END
4.1.6 определяет существование логина и пароля пациента в системе.
CREATE PROCEDURE [patient_login](@login varchar(50),@password varchar(50))
AS
BEGIN
declare @number int ;
set @number =0;
if(EXISTS(select *
from пациент
where пароль = @password and логин_пациента = @login
group by логин_пациента ))
begin
select @number = COUNT(*)
from пациент
where пароль = @password and логин_пациента = @login
group by логин_пациента
end
select @number
END
4.1.7 Обновляет направление на анализ
CREATE PROCEDURE [update_analyze](@id int,@rezult varchar(max))
AS
BEGIN
update направление_на_анализ
set результат = @rezult
where идентификатор_направления = @id
END
4.1.8 Просмотр анализов пациента
CREATE PROCEDURE [patient_analize](@patient_id varchar(50))
AS
BEGIN
select посещение.дата_приема, направление_на_анализ.дата_сдачи,направление_на_анализ.тип_анализа,направление_на_анализ.результат
from пациент inner join посещение on посещение.логин_пациента = пациент.логин_пациента
inner join направление_на_анализ on направление_на_анализ.идентификатор_посещения = посещение.идентификатор_посещения
where пациент.логин_пациента = @patient_id
END
4.1.9 Добавление нового направления на анализ
CREATE PROCEDURE [insert_analyze](@id int,@type varchar(max),@date date)
AS
BEGIN
insert into направление_на_анализ
(идентификатор_посещения,тип_анализа, дата_сдачи)
values (@id, @type, @date)
END
4.1.10 Удаление направления на анализ.
CREATE PROCEDURE [delete_analyze](@id int)
AS
BEGIN
delete направление_на_анализ
where направление_на_анализ.идентификатор_направления =@id
END
4.1.11 Возвращает типы анализов для посещения
CREATE PROCEDURE [analyze_type_for_ticket_id] (@ticket_id int)
AS
BEGIN
select направление_на_анализ.тип_анализа
from направление_на_анализ
where направление_на_анализ.идентификатор_посещения = @ticket_id
END
4.1.12 Возвращает даты направления на анализы для посещения
CREATE PROCEDURE [analyze_date_for_ticket_id_and_type] (@ticket_id int,@type varchar(max))
AS
BEGIN
select направление_на_анализ.дата_сдачи
from направление_на_анализ
where направление_на_анализ.идентификатор_посещения = @ticket_id and направление_на_анализ.тип_анализа = @type
END
4.1.13 Направления на анализы для пациента
CREATE PROCEDURE [analizes_for_patient_name](@patient_name varchar(50))
AS
BEGIN
select направление_на_анализ.дата_сдачи, направление_на_анализ.тип_анализа, направление_на_анализ.результат
from направление_на_анализ inner join посещение on посещение.идентификатор_посещения = направление_на_анализ.идентификатор_посещения
inner join пациент on пациент.логин_пациента = посещение.логин_пациента
where пациент.имя = @patient_name
END
4.1.14 Типы анализов для для посещения
CREATE PROCEDURE [analize_type_for_ticket_id](@ticket_id int)
AS
BEGIN
select distinct направление_на_анализ.тип_анализа
from направление_на_анализ
where направление_на_анализ.идентификатор_посещения = @ticket_id
END
4.1.15 Результаты анализов для талончика по типу и дате
CREATE PROCEDURE [analize_result_for_ticket_id_and_type_and_date](@ticket_id int,@type varchar(max),@date date)
AS
BEGIN
select направление_на_анализ.результат
from направление_на_анализ
where направление_на_анализ.идентификатор_посещения = @ticket_id
and направление_на_анализ.тип_анализа = @type
and направление_на_анализ.дата_сдачи = @date
END
4.1.16 Даты направления на анализ для талончика по типу посещения и дате
CREATE PROCEDURE [analize_date_for_ticket_id_and_type_and_date](@ticket_id int,@type varchar(max),@date date)
AS
BEGIN
select направление_на_анализ.дата_сдачи, направление_на_анализ.идентификатор_направления,направление_на_анализ.результат
from направление_на_анализ
where направление_на_анализ.идентификатор_посещения = @ticket_id
and направление_на_анализ.тип_анализа = @type
and направление_на_анализ.дата_сдачи = @date
END
4.1.17 Даты направлений на анализы по идентификатору талончика и типу анализа
CREATE PROCEDURE [analize_date_for_ticket_id_and_type](@ticket_id int,@type varchar(max))
AS
BEGIN
select направление_на_анализ.дата_сдачи, направление_на_анализ.идентификатор_направления,направление_на_анализ.результат
from направление_на_анализ
where направление_на_анализ.идентификатор_посещения = @ticket_id
and направление_на_анализ.тип_анализа = @type
END
4.1.18 Информация о выписанных лекарствах для пациента
CREATE PROCEDURE [drug_for_patient](@patient_id varchar(50))
AS
BEGIN
select посещение.дата_приема, лекарство.наименование,рецепт.количество
from пациент inner join посещение on посещение.логин_пациента = пациент.логин_пациента
inner join рецепт on рецепт.идентификатор_посещения = посещение.идентификатор_посещения
inner join лекарство on лекарство.идентификатор_лекарства = рецепт.идентификатор_лекарства
where пациент.логин_пациента = @patient_id
END
4.1.19 Возвращает пациентов на участке
CREATE PROCEDURE [patients_for_uch](@uch_num int)
AS
BEGIN
select пациент.имя,улица.наименование_улицы,пациент.логин_пациента
from пациент inner join улица on пациент.идентификатор_улицы = улица.идентификатор_улицы
inner join участок on участок.номер_участка = улица.номер_участка
where участок.номер_участка = @uch_num
END
4.1.20 Номер участка по имени пациента
CREATE PROCEDURE [number_uch_for_patient_name](@name varchar(50))
AS
BEGIN
select участок.номер_участка
from участок inner join улица on улица.номер_участка = участок.номер_участка
inner join пациент on пациент.идентификатор_улицы = улица.идентификатор_улицы
where @name = пациент.имя
END
4.1.21 Пациенты, относящиеся к врачу территориально
CREATE PROC [patients_to_doctor](@doctor_name varchar(50))
AS
declare @doc_id varchar(50);
select @doc_id=врач.логин_врача
from врач
where @doctor_name = врач.имя
select пациент.имя
from пациент inner join улица on пациент.идентификатор_улицы = улица.идентификатор_улицы
inner join участок on участок.номер_участка = улица.номер_участка
inner join врач on врач.номер_участка = участок.номер_участка
where врач.логин_врача = @doc_id
4.1.22 Возвращает информацию о посещениях для пациента
CREATE PROCEDURE [tickets_to_patients](@patient_id varchar(50))
AS
BEGIN
select посещение.дата_приема,посещение.время_приема,кабинет.номер_кабинета, врач.длительность_приема ,врач.имя, специальность.наименование_специальности,посещение.лечение
from пациент inner join посещение on посещение.логин_пациента = пациент.логин_пациента
inner join расписание on расписание.идентификатор_расписания = посещение.идентификатор_расписания
inner join врач on врач.логин_врача = расписание.логин_врача
inner join специальность on специальность.идентификатор_специальности = врач.идентификатор_специальности
inner join кабинет on кабинет.номер_кабинета = расписание.номер_кабинета
where пациент.логин_пациента = @patient_id
END
4.1.23 Возвращает даты и времена посещений для доктора и пациента
CREATE PROCEDURE [tickets_time_and_id_for_doctor_and_patient](@doc_login varchar(50),@patient_name varchar(50))
AS
BEGIN
select посещение.дата_приема посещение.время_приема,посещение.идентификатор_посещения
from врач inner join расписание on врач.логин_врача = расписание.идентификатор_расписания
inner join посещение on посещение.идентификатор_расписания = расписание.идентификатор_расписания
inner join пациент on пациент.логин_пациента = посещение.логин_пациента
where врач.логин_врача = @doc_login and пациент.имя = @patient_name
END
4.1.24 Возвращает информацию о посещениях для доктора и пациента
CREATE PROCEDURE [tickets_for_doctor_and_patient](@doc_name varchar(50),@patient_name varchar(50))
AS
BEGIN
select посещение.дата_приема , посещение.диагноз, посещение.диагноз ,посещение.жалобы, посещение.лечение, посещение.тип_посещения, направление_на_анализ.дата_сдачи, направление_на_анализ.тип_анализа, направление_на_анализ.результат,лекарство.наименование, рецепт.количество
from врач inner join расписание on врач.логин_врача = расписание.идентификатор_расписания
inner join посещение on посещение.идентификатор_расписания = расписание.идентификатор_расписания
inner join рецепт on рецепт.идентификатор_посещения = посещение.идентификатор_посещения
inner join лекарство on лекарство.идентификатор_лекарства = рецепт.идентификатор_рецепта
inner join пациент on пациент.логин_пациента = посещение.логин_пациента
inner join направление_на_анализ on направление_на_анализ.идентификатор_посещения = посещение.идентификатор_посещения
where врач.имя = @doc_name and пациент.имя = @patient_name
END
4.1.25 Свободные талончики для доктора на текушую дату
CREATE PROCEDURE [tickets_for_docName_dateFREE] (@docname varchar(50),@date date)
AS
BEGIN
declare @doclogin varchar(50)
select @doclogin = врач.логин_врача
from врач
where врач.имя = @docname
select посещение.время_приема, посещение.логин_пациента,посещение.идентификатор_посещения
from посещение inner join расписание on расписание.идентификатор_расписания = посещение.идентификатор_расписания
inner join врач on врач.логин_врача = расписание.логин_врача
where (врач.логин_врача = @doclogin and посещение.дата_приема = @date) and посещение.логин_пациента is null
END
4.1.26 Все талончики для доктора на текушую дату
CREATE PROCEDURE [tickets_for_docName_date] (@docname varchar(50),@date date)
AS
BEGIN
declare @doclogin varchar(50)
select @doclogin = врач.логин_врача
from врач
where врач.имя = @docname
select посещение.время_приема
from посещение inner join расписание on расписание.идентификатор_расписания = посещение.идентификатор_расписания
inner join врач on врач.логин_врача = расписание.логин_врача
where врач.логин_врача = @doclogin and посещение.дата_приема = @date
END
4.1.27 Все талончики для доктора
CREATE PROCEDURE [tickets_for_docName] (@docname varchar(50))
AS
BEGIN
declare @doclogin varchar(50)
select @doclogin = врач.логин_врача
from врач
where врач.имя = @docname
select посещение.время_приема
from посещение inner join расписание on расписание.идентификатор_расписания = посещение.идентификатор_расписания
inner join врач on врач.логин_врача = расписание.логин_врача
where врач.логин_врача = @doclogin
END
4.1.28 Все занятые талончики для доктора
CREATE PROCEDURE [tickets_for_doc_login] (@doclogin varchar(50))
AS
BEGIN
select distinct пациент.имя ,пациент.логин_пациента
from пациент inner join посещение on посещение.логин_пациента = пациент.логин_пациента
inner join расписание on расписание.идентификатор_расписания = посещение.идентификатор_расписания
inner join врач on врач.логин_врача = расписание.логин_врача
where врач.логин_врача = @doclogin
END
4.1.29 Времена посещений для врача и пациента на конкретную дату
CREATE PROCEDURE [tickets_date_for_doc_login_patient_login_date] (@doclogin varchar(50),@patient_login varchar(50),@date date)
AS
BEGIN
select distinct посещение.время_приема, посещение.идентификатор_посещения
from пациент inner join посещение on посещение.логин_пациента = пациент.логин_пациента
inner join расписание on расписание.идентификатор_расписания = посещение.идентификатор_расписания
inner join врач on врач.логин_врача = расписание.логин_врача
where врач.логин_врача = @doclogin and пациент.логин_пациента =@patient_login and посещение.дата_приема =@date
END
4.1.30 Посещения пациента на конкретную дату
CREATE PROCEDURE [select_tickets_for_patient_id_and_date](@patient_id varchar(50),@date date)
AS
BEGIN
select посещение.время_приема, врач.длительность_приема
from пациент inner join посещение on пациент.логин_пациента = посещение.логин_пациента
inner join расписание on посещение.идентификатор_расписания = расписание.идентификатор_расписания
inner join врач on врач.логин_врача = расписание.логин_врача
where посещение.логин_пациента = @patient_id and посещение.дата_приема = @date
END
4.1.31 Длительность приема по идентификатору посещения
CREATE PROCEDURE [select_length_time_for_ticket_id](@ticket_id int)
AS
BEGIN
select врач.длительность_приема
from посещение inner join расписание on посещение.идентификатор_расписания = расписание.идентификатор_расписания
inner join врач on врач.логин_врача = расписание.логин_врача
where посещение.идентификатор_посещения = @ticket_id
END
4.1.32 Количество талончиков для специальности
CREATE PROCEDURE [number_ticket_for_spec](@spec_name varchar(50))
AS
BEGIN
declare @spec_id int
select @spec_id = специальность.идентификатор_специальности
from специальность
where специальность.наименование_специальности = @spec_name
select специальность.наименование_специальности,COUNT(идентификатор_посещения) from специальность inner join врач on врач.идентификатор_специальности = специальность.идентификатор_специальности
inner join расписание on расписание.логин_врача = врач.логин_врача
inner join посещение on посещение.идентификатор_расписания = расписание.идентификатор_расписания
where @spec_id = специальность.идентификатор_специальности
groupby наименование_специальности
END
4.1.32 Количество талончиков для доктора
CREATE PROCEDURE [number_ticket_for_docname](@doc_name varchar(50))
AS
BEGIN
declare @doc_id int
select @doc_id = врач.логин_врача
from врач
where врач.имя = @doc_name
select врач.имя,COUNT(посещение.идентификатор_посещения)
from врач inner join расписание on расписание.логин_врача = врач.логин_врача
inner join посещение on посещение.идентификатор_расписания = расписание.идентификатор_расписания
where @doc_id = врач.логин_врача
groupby врач.имя
END
4.1.33 Лекарства, выписанные врачом
CREATE PROCEDURE [drug_for_doctor](@doctor_name varchar(50))
AS
BEGIN
declare @doc_login varchar(50)
select @doc_login = врач.логин_врача
from врач
where врач.имя = @doctor_name
select имя,лекарство.наименование
from врач inner join расписание on расписание.логин_врача = врач.логин_врача
inner join посещение on расписание.идентификатор_расписания = посещение.идентификатор_расписания
inner join рецепт on посещение.идентификатор_посещения = рецепт.идентификатор_посещения
inner join лекарство on лекарство.идентификатор_лекарства = рецепт.идентификатор_лекарства
where @doc_login = врач.логин_врача
END
4.1.34 Отчёт работы врачей в поликлиннике
CREATE PROCEDURE [doctor_statistic]
AS
BEGIN
select врач.имя,isnull(count (distinct посещение.логин_пациента),0)as 'количествопосещений',isnull(COUNT(distinct пациент.логин_пациента),0)as 'количествопациентов',isnull (sum(distinct рецепт.количество),0) as 'количестволекарств',isnull (count( distinct направление_на_анализ.идентификатор_направления),0)AS 'количествовыписанныханализов',isnull (count( distinct направление_на_анализ.результат),0) as 'количествополученныхрезультатов'
from врач inner join расписание on расписание.логин_врача = врач.логин_врача
inner join посещение on посещение.идентификатор_расписания = расписание.идентификатор_расписания
left join пациент on пациент.логин_пациента = посещение.логин_пациента and посещение.логин_пациента is not null
left join рецепт on рецепт.идентификатор_посещения = посещение.идентификатор_посещения
left join направление_на_анализ on направление_на_анализ.идентификатор_посещения = посещение.идентификатор_посещения groupby врач.имя
END
4.1.35 Поиск врачей по специальности и участку
CREATE PROCEDURE [doctors_for_spec_and_uch](@num_uch int,@spec_name varchar(50))
AS
BEGIN
select врач.имя
from участок inner join врач on врач.номер_участка = участок.номер_участка
inner join специальность on специальность.идентификатор_специальности = врач.идентификатор_специальности
where участок.номер_участка = @num_uch and специальность.наименование_специальности = @spec_name
END
4.1.36 Поиск логина и пароля врача в системе
CREATE PROCEDURE [doctor_login](@login varchar(50),@password varchar(50))
AS
BEGIN
declare @number int ;
set @number =0;
if(EXISTS(select *
from врач
where пароль = @password and логин_врача = @login
group by логин_врача ))
begin
select @number = COUNT(*)
from врач
where пароль = @password and логин_врача = @login
group by логин_врача
end
select @number
END
4.1.37 Поиск специальностей врачей на участке
CREATE PROCEDURE [spec_on_uch](@num_uch int)
AS
BEGIN
select distinct специальность.наименование_специальности
from специальность inner join врач on врач.идентификатор_специальности = специальность.идентификатор_специальности
inner join участок on участок.номер_участка = врач.номер_участка
where @num_uch = участок.номер_участка
END
4.1.38 Обновление информации о враче
CREATE PROCEDURE [update_doctor](@old_login varchar(50),@name varchar(50),@date_prac date,@date_b date,@adress varchar(max),@login varchar(50),@password varchar(50))
AS
BEGIN
update врач
set имя = @name,
врач.начало_практики = @date_prac,
врач.дата_рождения = @date_b,
врач.адрес = @adress,
врач.логин_врача = @login,
врач.пароль = @password
here врач.логин_врача = @old_login
END
4.1.39 Номер участка по улице
CREATE PROCEDURE [uch_id_for_street_id](@street_id int)
AS
BEGIN
select улица.номер_участка
from улица
where улица.идентификатор_улицы = @street_id
END
4.1.40 Свободные кабинеты для дня недели и смены
CREATE PROCEDURE [rooms_for_day_smena](@day int, @smena int)
AS
BEGIN
declare @count_smena int
select @count_smena = COUNT(*)
FROM смена
select кабинет.номер_кабинета
from кабинет
where номер_кабинета not in
select расписание.номер_кабинета
)
from расписание inner join смена on смена.идентификатор_смены = расписание.идентификатор_смены
where расписание.идентификатор_дня_недели = @day and смена.идентификатор_смены = @smena
)
END
4.1.41 Номера кабинетов для доктора, где у него идёт прием
CREATE PROCEDURE [room_num_for_doc_id_and_day](@id varchar(50),@id_day int)
AS
BEGIN
select distinct кабинет.номер_кабинета
from кабинет inner join расписание on расписание.номер_кабинета = кабинет.номер_кабинета
where расписание.логин_врача = @id and расписание.идентификатор_дня_недели=@id_day
END
4.1.42 Расписание по имени доктора
CREATE PROC [rasp_for_doctor_name](@doctor_name varchar(50))
AS
declare @doctor_login varchar(50);
select @doctor_login = врач.логин_врача
from врач
where врач.имя = @doctor_name
select расписание.идентификатор_расписания, название_дня_недели,время_начала, смена.время_конца,кабинет.номер_кабинета,врач.имя from врач
inner join расписание on врач.логин_врача =расписание.логин_врача
inner join смена on смена.идентификатор_смены = расписание.идентификатор_смены
inner join кабинет on расписание.номер_кабинета = кабинет.номер_кабинета
inner join день_недели on расписание.идентификатор_дня_недели = день_недели.идентификатор_дня_недели
where врач.логин_врача = @doctor_login
4.1.43 Рабочие смены для доктора по его логину, дню недели и номеру кабинета
CREATE PROCEDURE [smena_for_doc_id_and_day_and_room](@id varchar(50),@id_day int,@room int)
AS
BEGIN
select идентификатор_смены, идентификатор_расписания
from кабинет inner join расписание on расписание.номер_кабинета = кабинет.номер_кабинета
where расписание.логин_врача = @id and расписание.идентификатор_дня_недели=@id_day
and расписание.номер_кабинета = @room
END
4.1.44 Рабочие смены для доктора по его логину и дню недели
CREATE PROCEDURE [smena_for_day_and_doctor](@day int, @doc_login varchar(50))
AS
BEGIN
select смена.идентификатор_смены
from смена
where смена.идентификатор_смены not in(
select расписание.идентификатор_смены
from расписание
where расписание.идентификатор_дня_недели = @day and расписание.логин_врача = @doc_login
)
END
4.1.45 Вставка строки расписания
CREATEPROCEDURE [insert_into_table](@doc_idvarchar(50),@num_cabint,@day_idint,@smenaint)
AS
BEGIN
insert into расписание (логин_врача,номер_кабинета,идентификатор_дня_недели,идентификатор_смены,msrepl_tran_version)
values (@doc_id, @num_cab,@day_id,@smena,NEWID())
END
4.1.46 Общее расписание
CREATE PROCEDURE [get_table_id]
AS
BEGIN
select расписание.идентификатор_расписания, смена.время_начала, смена.время_конца,врач.длительность_приема, идентификатор_дня_недели
from расписание inner join смена on смена.идентификатор_смены = расписание.идентификатор_смены
inner join врач on врач.логин_врача = расписание.логин_врача
order by идентификатор_расписания
END
4.1.47 Удаления строки расписания
CREATE PROCEDURE [delete_table](@id int)
AS
BEGIN
delete расписание
where расписание.идентификатор_расписания = @id
END
4.1.48 Количество отработанных врачом часов в неделю
CREATE PROCEDURE [doctor_work_time]
AS
BEGIN
select врач.имя ,врач.номер_участка, специальность.наименование_специальности,isnull(sum(DATEDIFF(HOUR,смена.время_начала,время_конца)),0) AS 'количествочасов'
from специальность inner join врач on специальность.идентификатор_специальности = врач.идентификатор_специальности
left join расписание on расписание.логин_врача = врач.логин_врача
left join смена on смена.идентификатор_смены = расписание.идентификатор_смены
group by врач.имя, специальность.наименование_специальности,врач.номер_участка
order by [количество часов]desc
END
4.2 Описание триггеров
4.2.1 Триггер insteadofinsertдля таблицы расписание
При добавлении строки расписания проверяется есть ли кабинет из вставляемой строки в справочнике кабинет (таблица кабинет).Если его нет, то данный кабинет добавляется в справочник. Впротивномслучаепроисходитобычноедобавление.
GO
CREATE trigger [dbo].[yyy]
on [dbo].[расписание]
instead of insert
AS
begin
declare @numint
select @num = inserted.номер_кабинета
from inserted
if(not exists
(
selectкабинет.номер_кабинета
from кабинет
whereкабинет.номер_кабинета = @num
)
)
begin
insert into кабинет values(@num, '',NEWID())
end
insertinto расписание (логин_врача,номер_кабинета, идентификатор_дня_недели, идентификатор_смены,msrepl_tran_version)
selectлогин_врача,номер_кабинета, идентификатор_дня_недели, идентификатор_смены,msrepl_tran_version
from inserted
end
4.2.2Триггерinsteadofdeleteдлятаблицыпациент
При удалении модератором пациента(только он обладает такими правами) стираются все записи из таблицы посещение, касающиеся удаляемого пациента.
CREATE trigger [dbo].[patient_delete] on [dbo].[пациент]
instead of delete
as
BEGIN
declare @id varchar(50)
UPDATE посещение set логин_пациента = NULL
whereпосещение.идентификатор_посещенияin
(
selectидентификатор_посещения
from пациент innerjoin посещение onпациент.логин_пациента = посещение.логин_пациента
inner join deleted on deleted.логин_пациента = пациент.логин_пациента
wheredeleted.логин_пациента = посещение.логин_пациента
)
select @id= логин_пациента
from deleted
deleteпациент
whereпациент.логин_пациента = @id
END
5.Интерфейс пользователя
Интерфейс пользователя осуществлен с помощью программных средств среды разработкиvisualstudio 2010 на языке программирования C# при помощи интерфейса программирования приложений windowsforms.
5.1 Главное окно приложения
При загрузке приложения пользователь увидит данное окно. Внешний вид окна изображен на рисунке. Пользователь имеет возможность выбрать, под каким типом учётной записи он хочет зайти. Если же у него нет учётной записи, пользователь может войти как гость, либо зарегистрироваться как пациент. В нижней части окна имеется возможность выбора базы данных, с которой будет напрямую работать интерфейс.
Рис 5.1.1 Вид главного окна приложения
5.2 Гостевое меню
Если в основном меню нажать на кнопку войти как гость, то пользователь увидит гостевое меню. Внешний вид окна изображен на рисунке 5.2.2
Рис 5.2.1 Вид гостевого меню
При нажатии повкладке “врачи” появится меню, представленное на рисунке 5.2.2:
Рис 5.2.2 вид меню “врачи” гостевого меню
При нажатии по вкладке “пациенты” появится следующее меню, представленное на рисунке 5.2.3:
Рис 5.2.3 вид меню “пациенты” гостевого меню
Рассмотрим, что произойдет при нажатии на каждое меню.
Сначала рассмотрим вкладку врачи.
При нажатии на “посмотреть расписание” пользователь видит окно, представленное на рис. 5.2.4. Нужно выбрать специальность из списка, будут показаны имена соответствующих враче. Нажав на кнопку показать расписание на экране появится расписание.
Рис 5.2.4 вид меню “просмотр расписания” гостевого меню
При нажатии на “просмотр пациентов у врача” пользователь видит окно, представленное на рис.5.2.5. Выбрав из списка доктора, и нажав на кнопку “показать”, на экране появится соответствующие врачи.
Рис 5.2.5 вид меню “просмотр пациентов у доктора” гостевого меню
При нажатии на “просмотр всех врачей по специальности” пользователь видит окно, представленное на рис.5.2.6. Выбрав специальность, на экране появятся соответствующие доктора.
Рис 5.2.6 вид меню “просмотр всех врачей по специальности” гостевого меню
При нажатии на “просмотр всех врачей по специальности и участку” пользователь видит окно, представленное на рис.5.2.7. После выбора участка, появится выбор из соответствующих специальностей. После выбора одной из них на экране появится имена соответствующих врачей
Рис 5.2.7 вид меню “просмотр врачей по участку и специальности” гостевого меню
При нажатии на “выписанные лекарства” пользователь видит окно, представленное на рис.5.2.8. После выбора врача на экране появятся выписанные врачом лекарства.
Рис 5.2.8 вид меню “выписанные лекарства” гостевого меню
При нажатии на “количество часов в неделю” пользователь видит окно, представленное на рис.5.2.9. На экране появится отчёт о количестве часов работы врача в неделю.
Рис 5.2.9 вид меню “ количество часов в неделю ” гостевого меню
При нажатии на “статистика врачей” пользователь видит окно, представленное на рис.5.2.10. На экране появится комплексный отчёт о работе врача.
Рис 5.2.10 вид меню “ статистика врачей ” гостевого меню
Далее рассмотрим вкладку “пациенты”. При нажатии на “статистика посещений” пользователь видит окно, представленное на рис.5.2.11. После выбора пациента, увидим его посещения.
Рис 5.2.11 вид меню “ статистика посещений ” гостевого меню
При нажатии на “просмотр пациентов” пользователь видит окно, представленное на рис.5.2.12. Выбираем участок, на экране появляются соответствующие пациенты.
Рис 5.2.12 вид меню “ просмотр пациентов ” гостевого меню
При нажатии на “выписанные лекарства” пользователь видит окно, представленное на рис.5.2.13. Выбираем пациента, на экране появляются выписанные лекарства.
Рис 5.2.13 вид меню “ выписанные лекарства ” гостевого меню
При нажатии на “анализы” пользователь видит окно, представленное на рис.5.2.14
Выбираем пациента, на экране появляются выписанные пациенту анализы.
Рис 5.2.14 вид меню “ анализы ” гостевого меню
5.3 Меню пациента
После нажатия на кнопку войти как пациент гостевого меню пользователь увидит меню, представленное на рисунке 5.3.1.Пациент может ввести свой логин и пароль, либо зарегистрироваться. Сначала рассмотрим случай, когда пользователь хочет зарегистрироваться.
Рис 5.3.1 вид меню “ идентификация пациента ” меню пациента
По нажатию на кнопку “зарегистрироваться” пользователь увидит меню, представленное на рисунке 5.3.2. Звездочкой отмечены обязательные для заполнения поля.
Рис 5.3.2 вид меню “ регистрация пользователя ” меню пациента
При нажатии на кнопку “проверить” появится сообщение либо логин свободен(рис.5.3.3), либо занят(см. рис 5.3.4)
Рис 5.3.3 сообщение по нажатию кнопки проверить в меню регистрация пользователя.
Рис 5.3.4 вид меню “ регистрация пациента ” при выборе занятого логина меню пациента
После того как пользователь ввел данные, он должен нажать на кнопку отправить данные. Если все обязательные поля заполнены и логин свободен, то пользователь увидит меню, представленное на рисунке 5.3.5
Рис 5.3.5 вид меню “регистрация успешно завершена ” меню пациента
При нажатии на кнопку “вернуться в главное меню” пользователь увидит меню как на рисунке 5.1.1. При нажатии на кнопку “зайти под своей учетной записью” пользователь увидит меню, изображенное на рисунке 5.3.6.
Рис 5.3.6 вид меню окна “личный кабинет пациента ” меню пациента
При нажатии на кнопку “записаться на прием” пациент увидит меню, изображенное на рисунке 5.3.7. Здесь отображаются врачи с участка пациента, и, выбрав, специальность, а потом, доступных врачей по этой специальности, а также день на календаре в нижнем “combobox” отобразится список свободных талончиков на текущую дату для выбранного врача. Выбрав талончик, нужно нажать на кнопку “выбрать билет”. После этого талончик резервируется за пациентом.Чтобы вернуться в меню, как на рисунке, 5.3.6 нужно нажать на крестик в верхнем правом углу.
Рис 5.3.7 вид меню “выбор талончика” меню пациента
Если в меню пациента (рис.5.3.6) нажать на кнопку мои посещения, то отобразится форма как на рисунке 5.3.8. Закрыв форму, пользователь попадет в меню пациента(рис 5.3.6)
Рис 5.3.8 вид меню “мои посещения ” меню пациента
Если в меню пациента(рис. 5.3.6) нажать на кнопку мои анализы отобразятся все анализы пациента(и готовые и только выписанные).Вид меню изображен на рисунке 5.3.9. Закрыв эту форму, пользователь попадёт в меню пациента(рис. 5.3.6)
Рис 5.3.9 вид меню “мои анализы ” меню пациента
Если из меню пациента(рис. 5.3.6) нажать на кнопку “мои рецепты” отобразится меню как на рисунке 5.3.10. Закрыв эту форму, пользователь увидит меню пациента(рис. 5.3.6)
Рис 5.3.10 вид меню “мои рецепты ” меню пациента
Если в меню входа пациента (рис. 5.3.1) ввести логин и пароль ранее, зарегистрированный в системе, и нажать на кнопку вход, то при правильном логине и пароле, пользователь попадет в меню пользователя (рис 5.3.6). В противном случае на форме отобразится информация о неправильном вводе логина и пароля.(см. рис 5.3.11)
Рис 5.3.11 вид меню “идентификация пациента” меню пациента при неправильном вводе логина и пароля.
5.4 Меню врача
После того, как пользователь нажмёт на кнопку “войти как врач” главного меню на экране появится меню как на рисунке 5.4.1.
Рис 5.4.1 вид меню “идентификация врача”
При неправильном вводе логина и пароля появиться следующее сообщение(см. рис 5.4.2)
Рис 5.4.2 вид меню “идентификация врача” при неправильном вводе логина и пароля
Если логин и пароль корректны, то пользователь увидит меню, изображенное на рисунке 5.4.3.
Рис 5.4.3 вид меню врача
При нажатии на кнопку записать пациента на прием, на экране отобразится меню, позволяющее записать пациента на прием(см. рис. 5.4.4) Это меню аналогично соответствующему меню у пациента(рис 5.3.7), только у врача появляется возможно записать к врачу с любого участка.
Рис 5.4.4 вид меню “запись на прием” меню врача.
Закрыв это окно, появится меню доктора(рис 5.4.3). При нажатии на кнопку “сделать назначение” появится меню, как на рисунке 5.4.5. В этой форме врач выбирает конкретное посещения для пациента.
Рис 5.4.5 вид меню “поиск посещений” меню врача
Нажав на кнопку заполнить появится новая форма(см. рис 5.4.6). Здесь врач может написать(исправить) результат осмотра. Нажав на кнопку “сохранить”, результат вносится в систему.
Рис 5.4.6 вид меню “заполнение талончика” меню врача
При нажатии на кнопку “выписать направление на анализ” пользователь увидит меню, изображенное на рисунке 5.4.7. Врач пишет название, выбирает дату и наживает выписать, появляется соответствующее сообщение об успешной выписке направления. При закрытии формы врач попадет в меню врача (рис. 5.4.3).
6. Репликация данных
В данной работе используется публикация транзакций с обновляемыми подписками базы данных. Это позволяет синхронизировать данные между всеми филиалами. Схема репликации приведена на рисунке 6.1.
Рис 6.1 схема репликации
На схеме репликации изображен «Центральный офис», и несколько филиалов. Репликацияосуществляется транзакциями с обновляемыми подписками. Издателем является «Центральный офис» а подписчиками филиалы. Таким образом происходит синхронизация всей базы данных.
Пример скрипта для настройки репликации транзакций с обновляемыми подписками для центральной базы данных.
Для включения главной базы данных репликации транзакций с обновляемыми подписками используем следующий скрипт:
-- Включение базы данных репликации
usemaster
execsp_replicationdboption
@dbname = N'kp_bd',
@optname = N'publish',
@value = N'true'
GO
--Добавим агента чтения журнала в базу данных.
exec [kp_bd].sys.sp_addlogreader_agent
@job_login = null,
@job_password = null,
@publisher_security_mode = 1
GO
--Добавим агента чтения очереди для указанного распространителя:
exec [kp_bd].sys.sp_addqreader_agent
@job_login = null,
@job_password = null, @frompublisher = 1
GO
-- Добавление публикации транзакций
use [kp_bd]
execsp_addpublication
@publication = N'pub1',
@description = N'Публикациятранзакций с обновляемыми подписками базы данных "kp_bd" от издателя "REDWHITE-ПК\MSSQLSERVERSERJ1".',
@sync_method = N'concurrent',
@retention = 0,
@allow_push = N'true',
@allow_pull = N'true',
@allow_anonymous = N'true', @enabled_for_internet = N'false',
@snapshot_in_defaultfolder = N'true', @compress_snapshot = N'false',
@ftp_port = 21,
@ftp_login = N'anonymous', @allow_subscription_copy = N'false',
@add_to_active_directory = N'false', @repl_freq = N'continuous',
@status = N'active',
@independent_agent = N'true',
@immediate_sync = N'true',
@allow_sync_tran = N'true', @autogen_sync_procs = N'true',
@allow_queued_tran = N'true',
@allow_dts = N'false',
@conflict_policy = N'pub wins',
@centralized_conflicts = N'true', @conflict_retention = 14,
@queue_type = N'sql',
@replicate_ddl = 1, @allow_initialize_from_backup = N'false',
@enabled_for_p2p = N'false', @enabled_for_het_sub = N'false'
GO
--Создатим агента моментальных снимков для публикации.
execsp_addpublication_snapshot
@publication = N'pub1',
@frequency_type = 1, @frequency_interval = 0,
@frequency_relative_interval = 0, @frequency_recurrence_factor = 0,
@frequency_subday = 0, @frequency_subday_interval = 0,
@active_start_time_of_day = 0, @active_end_time_of_day = 235959,
@active_start_date = 0,
@active_end_date = 0,
@job_login = null,
@job_password = null,
@publisher_security_mode = 1
--Добавим в список доступа публикации имя входа.
execsp_grant_publication_access
@publication = N'pub1',
@login = N'sa'
GO
execsp_grant_publication_access
@publication = N'pub1',
@login = N'NT AUTHORITY\система'
GO
execsp_grant_publication_access
@publication = N'pub1',
@login = N'redwhite-ПК\redwhite'
GO
execsp_grant_publication_access
@publication = N'pub1',
@login = N'NT SERVICE\MSSQL$MSSQLSERVERSERJ1'
GO
execsp_grant_publication_access
@publication = N'pub1',
@login = N'NT SERVICE\SQLAgent$MSSQLSERVERSERJ1'
GO
execsp_grant_publication_access
@publication = N'pub1',
@login = N'distributor_admin'
GO
-- Добавление транзакционных статей для всех таблиц
use [kp_bd]
execsp_addarticle
@publication = N'pub1',
@article = N'врач',
@source_owner= N'dbo',
@source_object = N'врач',
@type = N'logbased',
@description = N'', @creation_script = N'',
@pre_creation_cmd = N'drop',
@schema_option = 0x0000000008035CDF,
@identityrangemanagementoption = N'none', @destination_table = N'врач',
@destination_owner = N'dbo',
@status = 24, @vertical_partition = N'false',
@ins_cmd = N'CALL [dbo].[sp_MSins_dboврач]', @del_cmd = N'VCALL [dbo].[sp_MSdel_dboврач]',
@upd_cmd = N'VCALL [dbo].[sp_MSupd_dboврач]'
GO
use [kp_bd]
execsp_addarticle
@publication = N'pub1',
@article = N'день_недели', @source_owner = N'dbo',
@source_object = N'день_недели',
@type = N'logbased', @description = N'',
@creation_script = N'',
@pre_creation_cmd = N'drop', @schema_option = 0x0000000008035CDF,
@identityrangemanagementoption = N'auto',
@pub_identity_range = 10000,
@identity_range = 1000,
@threshold = 80,
@destination_table = N'день_недели',
@destination_owner = N'dbo',
@status = 24,
@vertical_partition = N'false',
@ins_cmd = N'CALL [dbo].[sp_MSins_dboдень_недели]', @del_cmd = N'VCALL [dbo].[sp_MSdel_dboдень_недели]', @upd_cmd = N'VCALL [dbo].[sp_MSupd_dboдень_недели]'
GO
use [kp_bd]
execsp_addarticle
@publication = N'pub1',
@article = N'кабинет', @source_owner = N'dbo',
@source_object = N'кабинет',
@type = N'logbased', @description = N'',
@creation_script = N'',
@pre_creation_cmd = N'drop', @schema_option = 0x0000000008035CDF,
@identityrangemanagementoption = N'none',
@destination_table = N'кабинет',
@destination_owner = N'dbo', @status = 24,
@vertical_partition = N'false',
@ins_cmd = N'CALL [dbo].[sp_MSins_dboкабинет]',
@del_cmd = N'VCALL [dbo].[sp_MSdel_dboкабинет]', @upd_cmd = N'VCALL [dbo].[sp_MSupd_dboкабинет]'
GO
use [kp_bd]
execsp_addarticle
@publication = N'pub1',
@article = N'лекарство', @source_owner = N'dbo',
@source_object = N'лекарство',
@type = N'logbased', @description = N'',
@creation_script = N'',
@pre_creation_cmd = N'drop', @schema_option = 0x0000000008035CDF,
@identityrangemanagementoption = N'auto',
@pub_identity_range = 10000,
@identity_range = 1000,
@threshold = 80,
@destination_table = N'лекарство',
@destination_owner = N'dbo', @status = 24,
@vertical_partition = N'false',
@ins_cmd = N'CALL [dbo].[sp_MSins_dboлекарство]',
@del_cmd = N'VCALL [dbo].[sp_MSdel_dboлекарство]', @upd_cmd = N'VCALL [dbo].[sp_MSupd_dboлекарство]'
GO
use [kp_bd]
execsp_addarticle @publication = N'pub1',
@article = N'личное_дело_врача', @source_owner = N'dbo', @source_object = N'личное_дело_врача',
@type = N'logbased',
@description = N'',
@creation_script = N'',
@pre_creation_cmd = N'drop',
@schema_option = 0x0000000008035CDF,
@identityrangemanagementoption= N'auto',
@pub_identity_range = 10000,
@identity_range = 1000, @threshold = 80,
@destination_table = N'личное_дело_врача',
@destination_owner = N'dbo',
@status = 24,
@vertical_partition = N'false',
@ins_cmd = N'CALL [dbo].[sp_MSins_dboличное_дело_врача]',
@del_cmd = N'VCALL [dbo].[sp_MSdel_dboличное_дело_врача]',
@upd_cmd = N'VCALL [dbo].[sp_MSupd_dboличное_дело_врача]'
GO
use [kp_bd]
execsp_addarticle
@publication = N'pub1',
@article = N'модератор', @source_owner = N'dbo',
@source_object = N'модератор',
@type = N'logbased', @description = N'',
@creation_script = N'',
@pre_creation_cmd = N'drop',
@schema_option = 0x0000000008035CDF,
@identityrangemanagementoption =N'none',
@destination_table = N'модератор',
@destination_owner = N'dbo', @status = 24,
@vertical_partition = N'false',
@ins_cmd = N'CALL [dbo].[sp_MSins_dboмодератор]',
@del_cmd = N'VCALL [dbo].[sp_MSdel_dboмодератор]', @upd_cmd = N'VCALL [dbo].[sp_MSupd_dboмодератор]'
GO
use [kp_bd]
execsp_addarticle
@publication = N'pub1',
@article = N'направление_на_анализ',
@source_owner = N'dbo', @source_object = N'направление_на_анализ',
@type = N'logbased',
@description = N'', @creation_script = N'',
@pre_creation_cmd = N'drop',
@schema_option = 0x0000000008035CDF,
@identityrangemanagementoption = N'auto', @pub_identity_range = 10000,
@identity_range = 1000,
@threshold = 80,
@destination_table = N'направление_на_анализ',
@destination_owner = N'dbo', @status = 24, @vertical_partition = N'false',
@ins_cmd = N'CALL [dbo].[sp_MSins_dboнаправление_на_анализ]',
@del_cmd = N'VCALL [dbo].[sp_MSdel_dboнаправление_на_анализ]', @upd_cmd = N'VCALL [dbo].[sp_MSupd_dboнаправление_на_анализ]'
GO
use [kp_bd]
execsp_addarticle
@publication = N'pub1',
@article = N'пациент',
@source_owner= N'dbo',
@source_object = N'пациент',
@type = N'logbased', @description = N'',
@creation_script = N'',
@pre_creation_cmd = N'drop',
@schema_option = 0x0000000008035CDF,
@identityrangemanagementoption = N'none',
@destination_table = N'пациент',
@destination_owner = N'dbo',
@status = 24, @vertical_partition = N'false',
@ins_cmd = N'CALL [dbo].[sp_MSins_dboпациент]',
@del_cmd = N'VCALL [dbo].[sp_MSdel_dboпациент]',
@upd_cmd = N'VCALL [dbo].[sp_MSupd_dboпациент]'
GO
use [kp_bd]
execsp_addarticle
@publication = N'pub1',
@article = N'посещение',
@source_owner = N'dbo',
@source_object = N'посещение',
@type = N'logbased', @description = N'',
@creation_script = N'',
@pre_creation_cmd = N'drop',
@schema_option = 0x0000000008035CDF,
@identityrangemanagementoption = N'auto',
@pub_identity_range = 10000,
@identity_range = 1000,
@threshold = 80,
@destination_table = N'посещение',
@destination_owner = N'dbo',
@status = 24,
@vertical_partition = N'false',
@ins_cmd = N'CALL [dbo].[sp_MSins_dboпосещение]',
@del_cmd = N'VCALL [dbo].[sp_MSdel_dboпосещение]', @upd_cmd = N'VCALL [dbo].[sp_MSupd_dboпосещение]'
GO
use [kp_bd]
execsp_addarticle
@publication = N'pub1',
@article = N'расписание', @source_owner = N'dbo',
@source_object = N'расписание',
@type = N'logbased', @description = N'',
@creation_script = N'',
@pre_creation_cmd = N'drop', @schema_option = 0x0000000008035CDF,
@identityrangemanagementoption= N'auto', @pub_identity_range = 10000,
@identity_range = 1000,
@threshold = 80,
@destination_table = N'расписание',
@destination_owner = N'dbo',
@status = 24,
@vertical_partition = N'false',
@ins_cmd = N'CALL [dbo].[sp_MSins_dboрасписание]',
@del_cmd = N'VCALL [dbo].[sp_MSdel_dboрасписание]',
@upd_cmd = N'VCALL [dbo].[sp_MSupd_dboрасписание]'
GO
use [kp_bd]
execsp_addarticle
@publication = N'pub1',
@article = N'рецепт', @source_owner = N'dbo',
@source_object = N'рецепт',
@type = N'logbased', @description = N'',
@creation_script = N'',
@pre_creation_cmd = N'drop', @schema_option = 0x0000000008035CDF,
@identityrangemanagementoption = N'auto',
@pub_identity_range = 10000,
@identity_range = 1000,
@threshold = 80,
Подобные документы
Обзор медицинских информационных систем. Анализ и моделирование автоматизированной системы "Регистратура". Требования к составу и параметрам вычислительной системы. Обоснование выбора системы управления базами данных. Разработка инструкции пользователя.
дипломная работа [1,2 M], добавлен 14.10.2012Анализ и выбор СУБД. Разработка программного комплекса для поликлиники, позволяющего повысить эффективность работы регистратуры за счет сокращения трудовых затрат, а также повышения качества работы. Требования к информационной и программной совместимости.
дипломная работа [3,2 M], добавлен 09.10.2013Разработка программной системы для регистратуры поликлиники; создание базы данных. Описание предметной области: сведения о врачах, пациентах, учет обращений, регистрация обследований и назначенных препаратов. Содержимое таблиц, пользовательский интерфейс.
курсовая работа [6,2 M], добавлен 30.07.2012Анализ, математическая постановка задачи. Описание алгоритма работы основной программы. Детализация отдельных участков программы. Графический интерфейс программы "15". Описания используемых типов, глобальных переменных, процедур, функций. Процесс отладки.
курсовая работа [48,8 K], добавлен 14.02.2009Описание автоматизированной информационной системы автотранспортного предприятия. Область применения системы, ее функциональное содержание и возможности. Требования к программной и аппаратной части, алгоритм работы. Сценарий работы с пользователем.
курсовая работа [638,6 K], добавлен 18.09.2014Создание автоматизированной системы обработки заявок пользователей. Анализ требований к информационному, техническому и программному обеспечению. Проектирование интерфейса системы. Выбор средств реализации. Модель базы данных системы обработки заявок.
курсовая работа [1,6 M], добавлен 22.12.2014Метод имитационного моделирования, построение программа на языке GPSS\PS. Укрупненная схема моделирующего алгоритма. Математическая модель и ее описание. Возможные улучшения в работе системы. Результаты моделирования оптимизации работы поликлиники.
курсовая работа [148,6 K], добавлен 29.06.2011Разработка программы автоматизации подбора запчастей для ремонта автомобилей. Структурные единицы сообщений. Концептуальная модель системы. Алгоритм работы автоматизированной системы. Физическая модель данных. Описание пользовательского интерфейса.
дипломная работа [2,1 M], добавлен 20.06.2013Проектирование базы данных поликлиники "Добрый доктор", построение концептуальной модели данных на основе анализа предметной области. Компьютерная сеть поликлиники: топология, достоинства и недостатки. Создание рекламного сайта поликлиники в виде HTML.
дипломная работа [2,1 M], добавлен 09.06.2013Проектирование и разработка автоматизированной информационной системы (АИС) публикации и обработки данных для работников детского сада № 176. Недостатки существующей АИС, снижающие эффективность работы организации. Прототип пользовательского интерфейса.
дипломная работа [7,7 M], добавлен 19.07.2012