Автоматизированная система для работы поликлиники

Тип работы:
Отчет
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

ГУАП КАФЕДРА № 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 = 235 959,

@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 SERVICEMSSQL$MSSQLSERVERSERJ1'

GO

execsp_grant_publication_access

@publication = N’pub1',

@login = N’NT SERVICESQLAgent$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 = 0×8035CDF,

@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 = 0×8035CDF,

@identityrangemanagementoption = N’auto',

@pub_identity_range = 10 000,

@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 = 0×8035CDF,

@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 = 0×8035CDF,

@identityrangemanagementoption = N’auto',

@pub_identity_range = 10 000,

@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 = 0×8035CDF,

@identityrangemanagementoption= N’auto',

@pub_identity_range = 10 000,

@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 = 0×8035CDF,

@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 = 0×8035CDF,

@identityrangemanagementoption = N’auto', @pub_identity_range = 10 000,

@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 = 0×8035CDF,

@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 = 0×8035CDF,

@identityrangemanagementoption = N’auto',

@pub_identity_range = 10 000,

@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 = 0×8035CDF,

@identityrangemanagementoption= N’auto', @pub_identity_range = 10 000,

@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 = 0×8035CDF,

@identityrangemanagementoption = N’auto',

@pub_identity_range = 10 000,

@identity_range = 1000,

@threshold = 80,

ПоказатьСвернуть
Заполнить форму текущей работой