Разработка приложения для автоматизации ведения учета приёмов пациентов стоматологии

Автор работы: Пользователь скрыл имя, 05 Июня 2013 в 17:36, курсовая работа

Описание работы

Необходимо спроектировать базу данных и реализовать приложение для работы с ней, имеющее необходимый для сотрудников стоматологии функционал, различающийся согласно их правам и возможностям через доступ только к определённым формам приложения. Также приложение должно предоставлять возможности по администрированию базы данных, доступное отдельному типу пользователей (администратор), такие, как добавление и удаление пользователей.

Содержание работы

1. Постановка задачи 2
2. Нормализация 3
3. Описание таблиц 8
4. Реализация 11
4.1. Описание программного обеспечения 11
4.2. Хранимые процедуры 11
4.2.1. Процедура Cost1Serv 11
4.2.2. Процедура CostServAll 12
4.2.3. Процедура PacIns 12
4.2.4. Процедура PRas 13
4.2.5. Процедура PolusAdd 14
5. Руководство пользователя 15
5.1. Окно входа: 15
5.2. Администратор 15
5.3. Медицинский работник 16
5.4. Бухгалтер 18

Файлы: 1 файл

Базы данных.docx

— 678.21 Кб (Скачать файл)

Table 14. Структура таблицы Pacients

Personal (Персонал):

Имя поля

Тип

Описание

PersonalID

int

Идентификатор записи, первичный ключ

Ссылка на MaterialsPrices, связь «Один (Personal) ко многим (MaterialsPrices)»

Ссылка на Visits, связь «Один (Personal) ко многим (Visits)»

Family

varchar(50)

Фамилия сотрудника

Name

Varchar(50)

Имя сотрудника

Name2

Varchar(50)

Отчество сотрудника

Prava

Varchar(50)

Права сотрудника. “-1”-Администратор, “1” – Медицинский работник, “2”-Бухгалтер

Password

Varchar(50)

Пароль сотрудника

Speciality

Varchar(50)

Специальность сотрудника

Uvolen

Vrcahr(1)

Активность учетной записи. “-”-активна, “+” - заблокирована


Table 15. Структура таблицы Personal

 

 

 

Polus(Полюсы):

Имя поля

Тип

Описание

PolusID

int

Идентификатор записи, первичный  ключ

PacientID

int

Ссылка на Pacients, связь «Один (Pacients) ко многим (Polus)»

Number

Varchar(50)

Номер полюса (может начинаться с нуля)

Company

Varchar(50)

Название страховой компании

DTF

date

Дата с которой действителен

DTT

date

Дата по которую действителен


Table 16. Структура данных для Polus

Services (Оказанные услуги):

Имя поля

Тип

Описание

ServicesID

bigint

Идентификатор записи, первичный ключ

VisitID

bigint

Ссылка на Visits, связь «Один (Visits) ко многим (Services)»

Zub

int

Номер обрабатываемого зуба

MatManID

int

Ссылка на MaterialsManipulation, связь «Один (MaterialsManipulation) ко многим (Services)»


Table 17. Структура таблицы Services

Visits (Приёмы):

Имя поля

Тип

Описание

VisitID

bignt

Идентификатор записи, первичный  ключ

Ссылка на Services, связь «Один (Visits) ко многим (Services)»

PacientID

int

Ссылка на Pacients, связь «Один (Pacients) ко многим (Visits)»

PersonalID

int

Ссылка на Personal, связь «Один (Personal) ко многим (Visits)»

DT

datetime

Дата и время приёма

Comment

Varchar(max)

Комментарии к приёму


Table 18. Структура таблицы Visits 

  1. Реализация
    1. Описание программного обеспечения

Для реализации программного обеспечения  использовался язык программирования C# в среде MS Visual Studio 2010, база данных проектировалась в среде SQL Server Management Studio 2012.

 

Table 19. Схема базы данных

    1. Хранимые процедуры

 

      1. Процедура Cost1Serv

(Возвращает стоимость выбранной услуги+материала с учетом наличия полюса медицинского страхования.)

ALTER Proc [dbo].[Cost1Serv]

@ManName varchar(50),

@MatName varchar(50),

@VisitsID bigint,

@Cost1 numeric(10,2) output

as

declare

@PersonID int,

@skidka int

begin

set @skidka=100

select @PersonID=v.PacientID from Visits v where v.VisitID=@VisitsID

if exists(select * from Polus p where p.PacientID=@PersonID and p.DTF<=GETDATE() and p.DTT>=GETDATE())

set @skidka=75

 

select @Cost1=mp.Cost from Manipulations m

inner join MaterialsManipulation mm on mm.ManID=m.ManID

inner join Materials mat on mm.MatID=mat.MatID

inner join MaterialsPrice mp on mp.MatID=mat.MatID

where m.Name=@ManName and mat.Name=@MatName and mp.DTF<=GETDATE() and mp.DTT>=GETDATE()

 

set @Cost1=@Cost1/100*@skidka

end


 

      1. Процедура CostServAll

(Возвращает стоимость приёма с учетом полюса медицинского страхования.)

ALTER Proc [dbo].[CostServAll]

@VisitsID bigint,

@Cost1 numeric(10,2) output

as

declare

@PersonID int,

@skidka int

begin

set @Cost1=0

set @skidka=100

 

select @PersonID=v.PacientID from Visits v where v.VisitID=@VisitsID

 

if exists(select * from Polus p where p.PacientID=@PersonID and p.DTF<=GETDATE() and p.DTT>=GETDATE())

set @skidka=75

 

select @Cost1=Sum(mp.Cost) from Services s

inner join MaterialsManipulation mm on mm.MatManID=s.MatManID

inner join Manipulations m on mm.ManID=m.ManID

inner join Materials mat on mm.MatID=mat.MatID

inner join MaterialsPrice mp on mp.MatID=mat.MatID

where @VisitsID=s.VisitID and mp.DTF<=GETDATE() and mp.DTT>=GETDATE()

 

set @Cost1=@Cost1/100*@skidka

end


 

      1. Процедура PacIns

(Добавляет нового пациента в таблицу Pacients, проверяя вставляемые данные на корректность и уникальность)

ALTER Proc [dbo].[PacIns]

@Family varchar(50),

@Name varchar(50),

@Name2 varchar(50) ,

@DB date,

@Contra varchar(max)

as

declare

@tmp int

begin

set @tmp=-1

 

if exists(select * from Pacients p where p.Family=@Family and p.Name=@Name and @Name2=p.Name2 and p.Birthday=@DB)

set @tmp=0

 

if (@Family='' or @Name='' or @Name2='' or @DB>=GETDATE())

set @tmp=0

 

If (@tmp=-1)

begin

insert into Pacients

values(@Family,@Name,@Name2,@DB,@Contra)

end

end


 

      1. Процедура PRas

(Производит расчет количества приемов и выручки на определенный период времени, как у определённого(одного выбранного сотрудника), так и у всей стоматологии в целом.)

ALTER Proc [dbo].[PRas]

@PersonalID int,

@DTF date,

@DTT date,

@CountV1 int output,

@CountVAll int output,

@Cost1 numeric(10,2) output,

@CostAll numeric(10,2) output

as

begin

set @CountV1=0

 

select @Cost1=Sum(mp.Cost) from Visits v

inner join Services s on s.VisitID=v.VisitID and (v.DT>=@DTF and v.DT<=@DTT)

inner join MaterialsManipulation mm on mm.MatManID=s.MatManID

inner join MaterialsPrice mp on mp.MatID=mm.MatID and mp.DTF<=v.DT and mp.DTT>=v.DT

where v.PersonalID=@PersonalID

 

if (@Cost1 is null)

set @Cost1=0

 

select @CostAll=Sum(mp.Cost) from Visits v

inner join Services s on s.VisitID=v.VisitID and (v.DT>=@DTF and v.DT<=@DTT)

inner join MaterialsManipulation mm on mm.MatManID=s.MatManID

inner join MaterialsPrice mp on mp.MatID=mm.MatID and mp.DTF<=v.DT and mp.DTT>=v.DT

 

select @CountV1=Count(v.VisitID) from Visits v

where v.PersonalID=@PersonalID   and (v.DT>=@DTF and v.DT<=@DTT)

 

select @CountVAll=Count(v.VisitID) from Visits v

where (v.DT>=@DTF and v.DT<=@DTT)

 

end


 

      1. Процедура PolusAdd

(Добавление полюса в таблицу Polus, с проверкой корректности добавляемых значений.)

ALTER Proc [dbo].[PolusAdd]

@Company varchar(50),

@Number varchar(50),

@DTF date,

@DTT date,

@Family varchar(50),

@Name varchar(50),

@Name2 varchar(50)

as

declare

@tmp int,

@PacientID int

begin

set @tmp=-1

 

select @PacientID=p.PacientID from Pacients p where p.Name=@Name and p.Family=@Family and p.Name2=@Name2

 

if (@DTF>=@DTT or @Company='' or @Number='') set @tmp=0

 

if exists(select * from VPolus v where v.Name=@Name and v.Name2=@Name2 and v.Family=@Family and ((@DTF>=v.DTF and @DTF<=v.DTT) or (@DTT>=v.DTF and @DTT<=v.DTT) or (@DTF<=v.DTF and @DTT>=v.DTT)))

set @tmp=0

 

if @tmp=-1

begin

insert into Polus

values(@PacientID,@Company,@Number,@DTF,@DTT)

end

end 


  1. Руководство пользователя
    1. Окно входа:

 

20. Окно входа в систему

Пользователь вводит свою Фамилию и пароль, которые хранятся в базе данных. В зависимости от прав (администратор, бухгалтер, медицинский работник), пользователь получает доступ к разным формам приложения. Далее рассмотрена форма, доступная администратору.

 

    1. Администратор

21. Управление пользователями

Можно добавлять новых  и редактировать старых пользователей, также с помощью фильтров и  сортировок можно искать нужных пользователей.  Для активации нужного фильтра  или сортировки требуется поставить  флажок и нажать кнопку «Применить». Также доступен поиск по фамилии, для начала поиска требуется нажать клавишу «Ввод».

Доступна информация о  количестве пользователей (общее количество, активных, заблокированных). 

Уровень доступа “-1” означает, что пользователь наделяется правами администратора. Уровень доступа “1” означает, что пользователь наделяется правами медицинского работника. Уровень доступа “2” означает, что пользователь наделяется правами бухгалтера.

Значение в колонке  «Uvolen» равное “-” означает, что пользователь активен, а равное “+”, что пользователь заблокирован.

Для сохранения изменений, следует нажать кнопку «Сохранить изменения».

    1. Медицинский работник

 

22. Врач-Новые приёмы.

Для появления списка пациентов, требуется ввести часть фамилии пациента в поле «Поиск по Фамилии» и нажать клавишу «Ввод».

Для добавления нового приёма, требуется  выбрать нужного пациента из списка.

При добавлении оказываемой услуги, нужно указать номер зуба (если манипуляция проводится не с конкретным зубом, то указать “0”). При выборе пары Манипуляция-материал, автоматически считается её стоимость и выводится рядом. Для добавление услуги нажмите кнопку «Добавить услугу».

Добавленная услуга появится в списке.

Для добавления комментария к приёму, заполните соответствующее поле.

Полная стоимость приёма считается  над кнопкой «Завершить приём».

При нажатии кнопки «Завершить приём», будет выведена форма с списком оказанных услуг, её можно экспортировать в Excel или распечатать по желанию пациента.

 

23. Врач-Пациенты.

Для появления списка пациентов, требуется  ввести часть фамилии пациента в  поле «Поиск по Фамилии» и нажать клавишу  «Ввод».

Для добавления нового пациента требуется  заполнить соответствующие поля и нажать кнопку «Добавить пациента».

Для работы с полюсами, требуется  выбрать пациента из списка пациентов  и нажать по надписи «Работа с  полюсами».

Для добавление полюса, требуется заполнить соответствующие поля и нажать кнопку «Добавить полюс».

24. Врач-прошедшие приёмы.

Для появления списка приёмов с  пациентами, требуется ввести часть  фамилии пациента в поле «Поиск по Фамилии» и нажать клавишу «Ввод».

Для просмотра оказанных услуг  на конкретном приёме, нажмите кнопку «Показать конкретный приём». Перед  этим выбрав конкретного пациента.

Для просмотра оказанных услуг  за все прошедшие приёмы, нажмите  кнопку «Показать все услуги, оказанные  выбранному человеку». Перед этим выбрав конкретного пациента.

    1. Бухгалтер

25. Бухгалтерия-Материалы.

Доступно редактирование и добавление новых материалов/цен/периодов использования. Причем нельзя менять период использования, таким образом, чтобы менялась стоимость уже оказанной услуги, а так же дата действия нового материала, должна начинаться со следующего дня. Период действия цен с (включительно) по (не включительно).

При нажатии кнопки  «Сохранить изменения», поле «Последние изменения» будет автоматически заполнено, фамилией текущего пользователя.

Доступны сортировки и фильтры. Также можно посмотреть Текущие/Прошлые/будущие расценки. Внимание: при использовании этой опции сортировки и фильтры не действуют.

При нажатии кнопки «Текущий прайс», будет выведен в отдельной форме активные расценки, которые можно экспортировать или распечатать.

 

 

26. Прейскурант

27. Бухгалтерия-Манипуляции

Можно добавить новую манипуляцию.

Добавить новую пару манипуляция-материал или удалить  уже имеющуюся. Удаление не повлияет на уже оказанные услуги.

Для удобства присутствует система фильтров и сортировок, аналогичных, рассматриваемым ранее.

 

28. Бухгалтерия-Расчет выручки

Для появления списка врачей, требуется  ввести часть фамилии врача в  поле «Поиск по Фамилии Врача» и  нажать клавишу «Ввод».

Флаг «Скрыть уволенных», убирает  из списка уволенных(заблокированных) врачей.

Из полей с датами определяется период который нужно учитывать при расчете выручки.

При нажатии кнопки «Для выбранного врача», появится соответствующая надпись  с выручкой и количеством приёмов, как выбранного врача, так и всей стоматологии в целом.

При нажатии кнопки «Отчет», будет  открыта новая форма с отчётом  по выручке у всех врачей за данный период.

Внимание, даты учитываются с (включительно) и по (не включительно).

29. Отчет. Выручка за период по врачам.

 


Информация о работе Разработка приложения для автоматизации ведения учета приёмов пациентов стоматологии