Разработка базы данных для клиники Чудо доктор. Фгбоу во ниу мэи
Скачать 1.33 Mb.
|
Министерство образования и науки Российской Федерации ФГБОУ ВО «НИУ «МЭИ» Кафедра «Безопасности и информационных технологий» «Разработка базы данных для клиники «Чудо доктор» Технический проект Выполнил: Студент группы ИЭз-161-18 Трапезников Д.И. _______________ "___ "___________ 2019 г. Проверил: Жнякин О. В. _______________ "___ "___________ 2019 г. Москва 2019г. Оглавление1.Общие сведения 3 1.1.Наименования системы 3 1.1.1.Полное наименование системы 3 1.1.2.Краткое наименование системы 3 1.2.Основания для проведения работ 3 1.3.Наименование организации – Заказчика и Разработчика 3 1.4.Плановые сроки начала и окончания работы 3 1.5.Источники и порядок финансирования 3 1.6.Порядок оформления и предъявлению заказчику результатов работ 3 2.Назначение и цели создания системы 4 2.1.Назначение системы 4 2.2.Цели системы 4 3.Логическая схема 5 4.Физическая схема 6 5.Скрипт генерации БД 7 6.Описание таблиц БД 11 7.Тестовые данные 14 8.SQL – запросы 19 9.Вывод 23 Список литературы 24 Общие сведенияНаименования системыПолное наименование системыПолное наименование: «Разработка базы данных для клиники «Чудо доктор». Краткое наименование системыКраткое наименование: «ИС ЧД». Основания для проведения работКурсовая работа выполняется на основании коммерческого предложения. Наименование организации – Заказчика и РазработчикаЗаказчик Заказчик: преподаватель НИУ МЭИ кафедры «Безопасности и информационных технологий» Жнякин Олег Вениаминович Адрес фактический: 111250, Россия, Москва, ул. Красноказарменная, д.17 Телефон: +7(495) 3627198 Разработчик Разработчик: студент группы ИЭз-161-18 Трапезников Дмитрий Игоревич Адрес фактический: 111250, Россия, Москва, ул. Красноказарменная, д.17 Телефон: +7(495) 3627198 Плановые сроки начала и окончания работыПлановый срок начала работ по созданию системы и разработки серверной части: 29.10.2019. Плановые срок окончания работ по созданию системы: срок не определен. Плановый срок по окончанию разработки серверной части (первый этап): 20.12.2019. Срок второго этапа работы будет определен позднее. Источники и порядок финансированияНе финансируется. Порядок оформления и предъявлению заказчику результатов работРаботы по созданию «ИС ЧД» сдаются Разработчиком в конечном виде, в котором предусмотрен полный̆ функционал отдельных средств (технических, программных, информационных) в соответствии с календарным планом Проекта. По окончании всех этапов работ Разработчик сдает Заказчику соответствующие отчетные документы, состав которых определен Договором. Прием осуществляется путем демонстрации проекта. Назначение и цели создания системыНазначение системы«Чудо Доктор» — это многопрофильное лечебное учреждение, предоставляющее широкий спектр высокоспециализированных медицинских услуг и уникальную возможность решить большинство проблем со здоровьем в одном учреждении. В клинике работаю более 200 высококвалифицированных специалистов более чем по 40 специализациям. Разрабатываемая система предназначена для автоматизации работы клиники. «Чудо доктор» является многопрофильным учреждением, оказывающим ряд медицинских услуг пациентам. Внедрение комплексной системы автоматизации клиники существенно облегчает деятельность медицинского персонала (за счет автоматизации рутинных операций) и повышает качество обслуживания. Данная система содержит информацию о врачах, пациентах, кабинетах, расписании персонала, назначении лекарств пациенту и его диагноз. Цели системыУдобное и быстрое пользование амбулаторными картами путем введения поиска по БД; Сокращение трудозатрат на прием к врачу Детальный сбор данных о врачах, пациентах Сбор статистики по нагрузке каждого врача. Логическая схемаБаза данных клиники состоит из 14 таблиц. На лог. схеме (Рис.1) изображены визуальные связи между сущностями и их атрибуты. Рисунок 1 Логическая схема Физическая схемаРисунок 2 Физическая схема Скрипт генерации БД-- Generated by Oracle SQL Developer Data Modeler 19.2.0.182.1216 -- at: 2019-12-10 23:36:19 MSK -- site: Oracle Database 11g -- type: Oracle Database 11g CREATE TABLE cabinet ( id_c NUMBER(10) NOT NULL, cabinet VARCHAR2(40 CHAR) ); ALTER TABLE cabinet ADD CONSTRAINT cabinet_pk PRIMARY KEY ( id_c ); CREATE TABLE card ( id_card NUMBER(20) NOT NULL, patient_id_patient NUMBER(10) NOT NULL, type_card_id_type NUMBER(20) NOT NULL ); ALTER TABLE card ADD CONSTRAINT card_pk PRIMARY KEY ( id_card ); CREATE TABLE diagnosis ( id_d NUMBER(20) NOT NULL, diagnosis VARCHAR2(40 CHAR) ); ALTER TABLE diagnosis ADD CONSTRAINT diagnosis_pk PRIMARY KEY ( id_d ); CREATE TABLE drug ( id_drug NUMBER(20) NOT NULL, drug VARCHAR2(40 CHAR) ); ALTER TABLE drug ADD CONSTRAINT drug_pk PRIMARY KEY ( id_drug ); CREATE TABLE hist_cab ( personal_id_p NUMBER(20) NOT NULL, cabinet_id_c NUMBER(10) NOT NULL, start_date DATE, finish_date DATE ); ALTER TABLE hist_cab ADD CONSTRAINT hist_cab_pk PRIMARY KEY ( personal_id_p, cabinet_id_c ); CREATE TABLE hist_post ( personal_id_p NUMBER(20) NOT NULL, post_id_post NUMBER(20) NOT NULL, start_date DATE, finish_date DATE ); ALTER TABLE hist_post ADD CONSTRAINT hist_post_pk PRIMARY KEY ( personal_id_p, post_id_post ); CREATE TABLE patient ( id_patient NUMBER(10) NOT NULL, first_name VARCHAR2(40 CHAR), middle_name VARCHAR2(40 CHAR), second_name VARCHAR2(40 CHAR), date_birth DATE, phone NUMBER(20), login VARCHAR2(40 CHAR) NOT NULL, password VARCHAR2(40 CHAR) NOT NULL ); ALTER TABLE patient ADD CONSTRAINT patient_pk PRIMARY KEY ( id_patient ); CREATE TABLE pay ( id_pay NUMBER(20) NOT NULL, "date" DATE, price NUMBER(20), type_pay_id_type NUMBER(20) NOT NULL ); ALTER TABLE pay ADD CONSTRAINT pay_pk PRIMARY KEY ( id_pay ); CREATE TABLE personal ( id_p NUMBER(20) NOT NULL, first_name VARCHAR2(40 CHAR), middle_name VARCHAR2(40 CHAR), second_name VARCHAR2(40 CHAR), phone NUMBER(20), login VARCHAR2(40 CHAR) NOT NULL, password VARCHAR2(40 CHAR) NOT NULL ); ALTER TABLE personal ADD CONSTRAINT personal_pk PRIMARY KEY ( id_p ); CREATE TABLE post ( id_post NUMBER(20) NOT NULL, post VARCHAR2(40) ); ALTER TABLE post ADD CONSTRAINT post_pk PRIMARY KEY ( id_post ); CREATE TABLE purpose ( drug_id_drug NUMBER(20) NOT NULL, record_id_rec NUMBER(20) NOT NULL ); ALTER TABLE purpose ADD CONSTRAINT purpose_pk PRIMARY KEY ( drug_id_drug, record_id_rec ); CREATE TABLE record ( id_rec NUMBER(20) NOT NULL, date_rec DATE, time_rec VARCHAR2(10 CHAR), card_id_card NUMBER(20) NOT NULL, pay_id_pay NUMBER(20) NOT NULL, diagnosis_id_d NUMBER(20) NOT NULL, personal_id_p NUMBER(20) NOT NULL ); CREATE UNIQUE INDEX record__idx ON record ( pay_id_pay ASC ); ALTER TABLE record ADD CONSTRAINT record_pk PRIMARY KEY ( id_rec ); CREATE TABLE type_card ( id_type NUMBER(20) NOT NULL, type VARCHAR2(20 CHAR) ); ALTER TABLE type_card ADD CONSTRAINT type_card_pk PRIMARY KEY ( id_type ); CREATE TABLE type_pay ( id_type NUMBER(20) NOT NULL, type_pay VARCHAR2(40 CHAR) ); ALTER TABLE type_pay ADD CONSTRAINT type_pay_pk PRIMARY KEY ( id_type ); ALTER TABLE card ADD CONSTRAINT card_patient_fk FOREIGN KEY ( patient_id_patient ) REFERENCES patient ( id_patient ); ALTER TABLE card ADD CONSTRAINT card_type_card_fk FOREIGN KEY ( type_card_id_type ) REFERENCES type_card ( id_type ); ALTER TABLE hist_cab ADD CONSTRAINT hist_cab_cabinet_fk FOREIGN KEY ( cabinet_id_c ) REFERENCES cabinet ( id_c ); ALTER TABLE hist_cab ADD CONSTRAINT hist_cab_personal_fk FOREIGN KEY ( personal_id_p ) REFERENCES personal ( id_p ); ALTER TABLE hist_post ADD CONSTRAINT hist_post_personal_fk FOREIGN KEY ( personal_id_p ) REFERENCES personal ( id_p ); ALTER TABLE hist_post ADD CONSTRAINT hist_post_post_fk FOREIGN KEY ( post_id_post ) REFERENCES post ( id_post ); ALTER TABLE pay ADD CONSTRAINT pay_type_pay_fk FOREIGN KEY ( type_pay_id_type ) REFERENCES type_pay ( id_type ); ALTER TABLE purpose ADD CONSTRAINT purpose_drug_fk FOREIGN KEY ( drug_id_drug ) REFERENCES drug ( id_drug ); ALTER TABLE purpose ADD CONSTRAINT purpose_record_fk FOREIGN KEY ( record_id_rec ) REFERENCES record ( id_rec ); ALTER TABLE record ADD CONSTRAINT record_card_fk FOREIGN KEY ( card_id_card ) REFERENCES card ( id_card ); ALTER TABLE record ADD CONSTRAINT record_diagnosis_fk FOREIGN KEY ( diagnosis_id_d ) REFERENCES diagnosis ( id_d ); ALTER TABLE record ADD CONSTRAINT record_pay_fk FOREIGN KEY ( pay_id_pay ) REFERENCES pay ( id_pay ); ALTER TABLE record ADD CONSTRAINT record_personal_fk FOREIGN KEY ( personal_id_p ) REFERENCES personal ( id_p ); -- Oracle SQL Developer Data Modeler Summary Report: -- -- CREATE TABLE 14 -- CREATE INDEX 1 -- ALTER TABLE 27 -- CREATE VIEW 0 -- ALTER VIEW 0 -- CREATE PACKAGE 0 -- CREATE PACKAGE BODY 0 -- CREATE PROCEDURE 0 -- CREATE FUNCTION 0 -- CREATE TRIGGER 0 -- ALTER TRIGGER 0 -- CREATE COLLECTION TYPE 0 -- CREATE STRUCTURED TYPE 0 -- CREATE STRUCTURED TYPE BODY 0 -- CREATE CLUSTER 0 -- CREATE CONTEXT 0 -- CREATE DATABASE 0 -- CREATE DIMENSION 0 -- CREATE DIRECTORY 0 -- CREATE DISK GROUP 0 -- CREATE ROLE 0 -- CREATE ROLLBACK SEGMENT 0 -- CREATE SEQUENCE 0 -- CREATE MATERIALIZED VIEW 0 -- CREATE MATERIALIZED VIEW LOG 0 -- CREATE SYNONYM 0 -- CREATE TABLESPACE 0 -- CREATE USER 0 -- DROP TABLESPACE 0 -- DROP DATABASE 0 -- REDACTION POLICY 0 -- ORDS DROP SCHEMA 0 -- ORDS ENABLE SCHEMA 0 -- ORDS ENABLE OBJECT 0 -- ERRORS 0 -- WARNINGS 0 Описание таблиц БД
Рисунок 3 Диагноз Рисунок 4 Должность Рисунок 5 Запись на прием Рисунок 6 Назначение на должность Рисунок 7 История кабинета Рисунок 8 Кабинет Рисунок 9 Карта пациента Рисунок 10 Лекарства Рисунок 11 Назначенные лекарства Рисунок 12 Пациент Рисунок 13 Персонал Рисунок 14 Тип карты Рисунок 15 Тип оплаты Рисунок 16 Чек Тестовые данныеРисунок 17 Кабинет Рисунок 18 Диагноз Рисунок 19 Карта пациента Рисунок 20 Тип оплаты Рисунок 21 Лекарства Рисунок 22 История кабинетов Рисунок 23 Назначение на должность Рисунок 24 Пациент Рисунок 25 Чек Рисунок 26 Персонал Рисунок 27 Должность Рисунок 28 Назначенные лекарства Рисунок 29 Запись на прием SQL – запросыОтчет №1 Вывести данные клиентов, прием которых покрывала страховка. select patient.first_name, patient.middle_name, patient.second_name, record.id_rec, pay.price from patient, record, type_pay, pay, card where patient.id_patient=card.patient_id_patient and card.id_card=record.card_id_card and record.pay_id_pay=pay.id_pay and pay.type_pay_id_type=type_pay.id_type and type_pay.type_pay = 'Страховка' Отчет №2 Вывести данные клиентов, которые обратились из-за ушиба и страховка покрывает прием. select patient.first_name, patient.middle_name, patient.second_name, record.id_rec, pay.price from patient, record, type_pay, pay, card, diagnosis where patient.id_patient=card.patient_id_patient and card.id_card=record.card_id_card and record.pay_id_pay=pay.id_pay and pay.type_pay_id_type=type_pay.id_type and record.diagnosis_id_d=diagnosis.id_d and type_pay.type_pay = 'Страховка' and diagnosis.diagnosis = 'Ушиб' Отчет №3 Вывести количество приемов у врача Шевцовой select COUNT(record.id_rec) from record, personal where record.personal_id_p = personal.id_p and personal.second_name = 'Шевцова' Отчет №4 Вывести общую сумму за декабрь, которую оплатил пациент Варвара Беркут. select sum(pay.price) from pay, card, patient, record where patient.id_patient=card.patient_id_patient and card.id_card=record.card_id_card and record.pay_id_pay=pay.id_pay and patient.second_name = 'Беркут' and record.date_rec between '01/10/2019' and '30/12/2019' Отчет №5 Вывести препараты, которые назначили в ноябре для пациента Петрова. select diagnosis.diagnosis, drug.drug from diagnosis, drug, patient, purpose, card, record where diagnosis.id_d= record.diagnosis_id_d and purpose.record_id_rec=record.id_rec and purpose.drug_id_drug=drug.id_drug and patient.id_patient=card.patient_id_patient and card.id_card=record.card_id_card and patient.second_name = 'Петров' and record.date_rec between '01/11/2019' and '30/11/2019' Отчет №6 Вывести кабинет и ФИО ЛОРа. select personal.first_name, personal.middle_name, personal.second_name, cabinet.cabinet, post.post from post, cabinet, hist_cab, personal where hist_cab.cabinet_id_c=cabinet.id_c and hist_cab.personal_id_p=personal.id_p and post.id_post=personal.id_p and post.post = 'ЛОР' Отчет №7 Вывести расписание врача на день. select personal.first_name, personal.middle_name, personal.second_name, cabinet.cabinet, post.post, record.date_rec, record.time_rec from post, cabinet, hist_cab, personal, record where hist_cab.cabinet_id_c=cabinet.id_c and hist_cab.personal_id_p=personal.id_p and post.id_post=personal.id_p and record.personal_id_p= personal.id_p and record.date_rec = '03/12/2019' ВыводДля качественной работы всей информационной системы была сформирована база данных. Перед проектированием данной базы был проведён анализ предметной области, на основе которого и велась вся последующая работа. После принятия основных направлений работы и окончания анализа предметной области, была сформирована логическая модель базы данных, отражающая все сущности и связи между ними. В дальнейшем на её основе была организована физическая модель и сформирован скрипт, который сгенерировал все запланированные таблицы и связи между ними. Оценивая преимущества и недостатки Oracle и его функциональные возможности, можно утверждать, что данная система обладает всеми необходимыми инструментами для создания, редактирования, хранения и ежедневного использования баз данных. Интерфейс программы прост и удобен. Поставленная задача по проектировании и разработке информационной системы была полностью проделана. База данных для ОИП была реализована, запросы, осуществляющие выборку данных, написаны и работают согласно заявленному функционалу. Список литературыСистемы управления базами данных и знаний Автор: А. Наумов Издательство: Финансы и статистика Год: 1991 ISBN: 5-279-00509-6 DJVU: 11 Мб Введение в реляционные базы данных Автор: В. В. Кириллов, Г. Ю. Громов Издательство: БХВ-Петербург Год: 2009 Базы данных Автор: С. В. Глушаков, Д. В. Ломотько Издательство: АСТ Год: 2002 SQL Автор: Мартин Грабер Издательство: Лори Год: 2003 SQL. Руководство по изучению языка Автор: Крис Фиайли Издательство: ДМК Пресс, Питер Год: 2004 |