Разработка информационной системы медицинского учреждения. Модуль "Диспансеризация"

Создание информационной системы (ИС) медицинского учреждения с программным модулем "Диспансеризация". Формирование требований к ИС, ее внедрение. Организация взаимодействия персонала с ИС и модулем. Повышение качества и скорости обслуживания пациента.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 20.03.2017
Размер файла 1,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

1. Пациент может пройти диспансеризацию;

2. Пациент не может пройти диспансеризацию;

Если оказалось, что пациент не может пройти диспансеризацию, то терапевт отправляет его в регистратуру. Если же он может пройти диспансеризацию, то терапевт переходит к анкетированию пациента. После занесения данных анкетирования, терапевт отправляет в БД запрос на получение плана посещения врачей пациентом, далее распечатывает и передает его пациенту. На этом первичный прием заканчивается.

3) Вторичный прием пациента врачом-терапевтом;

Диаграмма 3. Врач-терапевт. Вторичный прием.

На данной модели бизнес-процессов отображён вторичный прием пациента терапевтом.

Первым этапом в представленной модели бизнес-процесса является сообщение пациентом информации о том, что он прошел всех необходимых врачей. Задействуя информационную систему, врач-терапевт получает из базы данных информацию о проценте завершения диспансеризации пациентом. После этого существуют два пути развития бизнес-процесса:

1. Если пациент прошел достаточное количество необходимых мед. мероприятий.

2. Если пациент не прошел достаточно количество необходимых мед. мероприятий;

Если пациент не прошел достаточно мед. мероприятий, то он отправляется проходить то, что не прошел. Если же он прошел достаточно мед. мероприятий, то терапевт отправляет в БД запрос на получение результатов прохождения их пациентом. Далее врач анализирует записи, определяет группу здоровья пациента, после чего опять же существует два пути развития бизнес-процессов:

1. Дополнительное обследование требуется;

2. Дополнительное обследование не требуется;

В случае если дополнительное обследование требуется пациенту, терапевт снова формирует план посещения врачей, заносит его в базу данных и отправляет на печать, после передав план пациенту. На это бизнес-процессы завершаются.

В случае же, если дополнительное обследование не требуется (такое также возможно, если человек уже дополнительно обследовался), то врач-терапевт подводит итоги диспансеризации, определяет медицинские рекомендации, заносит своё заключение в БД, передает мед. рекомендации пациенту. На это бизнес-процессы завершаются.

4) Прием пациента медицинским работником;

Диаграмма 4. Мед. работник. Прием пациента.

Данная модель описывает бизнес-процесс приема мед. работником пациента.

Первым этапом в представленной модели бизнес-процесса, является сообщение пациентом информации о том, что терапевт направил его к этому медицинскому специалисту.

Далее мед. работник отправляет в БД запрос на проверку данных пациента. После этого существуют два пути развития бизнес-процесса:

1. Данные оказались верны;

2. Данные оказались ложны;

В случае, данные пациента оказались ложными, то он отправляется в регистратуру, а бизнес-процесс заканчивается. Если же оказались верны, то специалистом проводится медицинское мероприятие, а его итоги сохраняются в базу данных. На это бизнес-процесс заканчивается.

5) Занесение данных в БД;

Диаграмма 5. Занесение данных в БД;

Данная модель описывает бизнес-процесс занесения данных в БД.

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

1. Сохранение данных прошло успешно;

2. Сохранить данные не удалось;

В случае если от ИС поступил положительный ответ о сохранении данных в БД, бизнес-процесс завершается. В противном случае, пользователю необходимо разрешить проблему препятствующую сохранению данных, после чего повторить бизнес-процесс сначала.

6) Запрос в БД;

Диаграмма 6. Запрос в БД

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

Первым этапом в представленной модели бизнес-процесса, является отправка в ИС необходимого запроса. Запрос может любым, единственный критерий - он не должен превышать функциональные возможности ИС. Затем, опираясь на временной критерий, пользователь ожидает получение данных от ИС. После этого существуют два пути развития бизнес-процесса:

1. Запрос был удовлетворен;

2. Запрос не был удовлетворен;

В случае, если запрос пользователя удовлетворен не был, он устраняет проблему, помешавшую ему получить необходимую информацию, после чего повторяет свой запрос. В случае, если запрос был удовлетворен, бизнес-процесс завершается.

7) Запрос к пациенту;

Диаграмма 7. Запрос к пациенту

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

В представленной модели бизнес-процесса, медицинским специалистом отправляется запрос к пациенту на получение необходимой информации, либо выполнения какого-либо действия, после чего ожидает он ответа. Независимо от того, в какой степени был удовлетворен запрос, бизнес-процесс завершается. При необходимости он может быть повторен медицинским специалистом.

2.3 Техническое задание

2.3.1 Разработка и утверждение технического задания на создание ИС

Техническое задание на разработку информационной системы (ИС) медицинского учреждения. Модуль "Диспансеризация"

Настоящее техническое задание (далее - ТЗ) описывает основание, назначение и требования к разработке информационной системы для нужд специалистов медицинских учреждений в части автоматизации бизнес-процессов по обеспечению приказа Министерства здравоохранения от 13.02.2016 №36ан "Об утверждении порядка проведения диспансеризации определенных групп взрослого населения" [2] (далее - Приказ).

Назначение и цели создания информационной системы.

Информационная систем (далее - ИС), разработанная в соответствии с настоящим ТЗ, обеспечивает автоматизированную ЛПУ (далее - Заказчик) по автоматизации ведения медицинской документации (Учетная форма № 131/у).

Целью разработки ИС является автоматизация деятельности Заказчика в части реализации требований Приказа.

Характеристика объекта автоматизации.

Объектом автоматизации является лечебно-профилактическое учреждение (далее - ЛПУ).

В ЛПУ проводится диспансеризация пациентов. Правила организации деятельности ЛПУ при проведении диспансеризации регламентируются в приказе Министерства здравоохранения от 13.02.2016 №36ан "Об утверждении порядка проведения диспансеризации определенных групп взрослого населения". [2]

Автоматизация деятельности Заказчика подразумевает коллективную работу сотрудников Заказчика в ИС. Предварительное число сотрудников - не регламентируется.

Автоматизация деятельности Заказчика подразумевает обработку персональных данных. Перечень необходимых мероприятий по обеспечению обработки персональных данных в полной мере возлагается на Заказчика.

Требования к информационной системе.

1. Требования к информационному обеспечению. ИС обеспечивает обработку данных, определенных формами учетной медицинской документации Приказа. Определение дополнительного состава данных настоящим ТЗ не предусмотрено.

2. Требования к техническому обеспечению. ИС использует архитектуру клиент-сервер. Для функционирования ИС требуется выделенный сервер и оборудование пользователей компьютерами.

3. Требования к программному обеспечению. Заказчик обеспечивает инсталлированное системное программное обеспечение на всех компьютерах, на которых подразумевается использование разрабатываемой ИС. ИС функционирует на базе операционных систем семейства Windows (XP, 7,8). Серверное и клиентское приложение ИС полностью разрабатываются Исполнителем;

4. Организационное обеспечение. По окончании разработки ИС Исполнитель предоставляет перечень инструктивных материалов. В случае обеспечения платной технической поддержки ИС, Исполнитель обеспечивает разработку регламентов по техническому обслуживанию ИС. В рамках разработки ИС Исполнитель обеспечивает бесплатное внедрение ИС на стороне Заказчика. Ошибки ИС, возникающие в ходе эксплуатации последней, устраняются бесплатно силами Исполнителя.

Сроки и этапы разработки ИС.

Этап №1. "Обследование объекта автоматизации". Проводится ознакомление с необходимыми бизнес-процессами, документацией, существующими информационными системами, автоматизирующими деятельность Заказчика. Проводится анализ работы сотрудников Заказчика с существующими информационными системами, замеряется время работы с программными модулями;

Этап №2. "Эскизный проект". Исполнитель разрабатывает эскизный проект, включающий: моделирование бизнес-процессов, структуру базы данных (ER-модель), эскизы интерфейса. Результаты согласовываются с Заказчиком;

Этап №3. "Разработка ИС". Разработка ИС подразумевает использование итерационной модели разработки ИС с предоставлением Заказчику промежуточных вариантов версий ИС для ознакомления и выявления замечаний;

Этап №4. "Тестирование ИС". Тестирование ИС проводится Исполнителем совместно с Заказчиком. На данном этапе Заказчик проводит полное тестирование ИС с фиксацией замечаний по работе ИС. Предоставляются инструктивные материалы;

Этап №5. "Опытная эксплуатация и внедрение". Этап подразумевает развертывание протестированной версии ИС на базе Заказчика. Ведется полноценная работа Заказчика в ИС. Фиксируются ошибки. В случае выявления ошибок, Исполнитель устраняет их.

2.4 Технический проект

Разработка ИС (модуль "Диспансеризация");

При разработке информационной системы, были задействованы следующие программные средства:

1 Borland Delphi 7 - интегрированная среда разработки (ИСР) программного приложения.

2 LucidChart - веб-приложение для разработки информационных схем.

3 MySQL - система управления базами данных.

4 Microsoft Word - текстовый редактор.

Обоснование выбора Borland Delphi 7

В качестве среды программирования, была выбрана Delphi версии 7 фирмы Borland, потому как она предоставляет широкие возможности для программирования приложений под ОС Windows.

Borland Delphi 7 - это высокопроизводительный инструмент визуального построения приложений включающий в себя компилятор кода и средства визуального программирования, позволяющий в кратчайшие сроки создать высококачественный программный продукт.

В Borland Delphi 7 также входят локальный SQL-сервер, генераторы отчетов, библиотеки визуальных компонентов, и прочее, необходимое для создания глубоко проработанного программного продукта необходимого для функционирования автоматизированной информационной систем

Особенности Borland Delphi 7:

- оптимальное время разработки приложения;

- высокая производительность разработанного приложения;

- низкие требования разработанного приложения к ресурсам компьютера;

- наращиваемость за счет встраивания новых компонент и инструментов в среду Borland Delphi 7;

- возможность разработки новых компонентов и инструментов собственными средствами Delphi 7 Enterprise (существующие компоненты и инструменты доступны в исходных кодах);

- удачная проработка иерархии объектов.

Обоснование выбора СУБД MySQL

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

При сравнении производительности запросов, MySQL уверенно лидирует перед другими СУБД, например, такими как MSSQL и Oracle.

Кроме того, выбор данной СУБД обусловлен следующими ее характеристиками:

- MySQL является клиент-серверной СУБД;

- MySQL свободно распространяемый продукт;

- MySQL является кросс-платформенным продуктом;

- MySQL является реляционной базой данных;

Основные характеристики СУБД Mysql:

- Многопоточность. Поддержка нескольких одновременных запросов;

- Оптимизация связей с присоединением многих данных за один проход;

- Записи фиксированной и переменной длины;

- ODBC драйвер в комплекте с исходным файлом;

- Гибкая система привилегий и паролей;

- До 16 ключей в таблице. Каждый ключ может иметь до 15 полей;

- Поддержка ключевых полей и специальных полей в операторе;

- Поддержка чисел длинной от 1 до 4 байт (ints, float, double, fixed), строк переменной длины и меток времени;

- Интерфейс с языками C и perl;

- Основанная на потоках, быстрая система памяти;

- Утилита проверки и ремонта таблицы (isamchk);

- Все данные хранятся в формате ISO8859_1;

- Все операции работы со строками не обращают внимания на регистр символов в обрабатываемых строках;

- Псевдонимы применимы как к таблицам, так и к отдельным колонкам в таблице;

- Все поля имеют значение по умолчанию. Можно использовать на любом подмножестве полей;

- Легкость управления таблицей, включая добавление и удаление ключей и полей.

Обоснование выбора LucidChart

В качестве средства разработки моделей бизнес-процессов, было выбрано визуальное средство для построения диаграмм на основе HTML5 - LucidChart. Сервис содержит большое количество образцов и примеров:

- блок схем;

- UML-моделей;

- ER-моделей данных;

- каркасов / макетов;

- системных диаграмм;

- моделей бизнес-процессов (BPMN 2.0);

- организационных схем;

- схем связей;

- схем сайтов;

Также сервис LucidChart даёт возможность сохранения созданных диаграмм в форматах: PDF, PNG и JPG

Обоснование выбора Microsoft Office Word

Microsoft Word является одной из самых востребованных программ современности, используемых в офисной работе. Данный текстовый редактор - наиболее мощный и распространенный.

Будучи текстовым редактором, он позволяет существенно облегчить работу по написанию текстов. Ведение корреспонденции, обработка текста, создание деловой и официальной переписки - все это стало проще проводить благодаря Microsoft Word. Выгодными особенностями программы являются ее функциональность и простота использования, благодаря чему даже неопытный пользователь способен легко разобраться в ней.

Microsoft Word обеспечивает простое и удобное форматирование текстового файла за счет продуманных инструментов и понятного интерфейса. Благодаря широкому спектру функций текстовый процессор Microsoft Word напоминает настольную издательскую систему. Среди функциональных возможностей программы можно отметить:

- наличие целого ряда шрифтов разного размера и начертания символов;

- наличие способов выделения текста;

- возможность установить параметры абзацев, междустрочные интервалы;

- возможность проведения автоматической проверки правописания, подбора синонимов;

- автоматическая нумерация страниц и переносы слов на новую строку;

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

Как видно, функционал данной программы очень разнообразен, благодаря этому текст будет иметь привлекательный вид, удобный для чтения и понимания. Кроме того, возможность автоформатирования, применения стилей, а также заранее подобранные шаблоны позволяют делать работу с Microsoft Word простой и удобной.

Таким образом, программа Microsoft Word - это самый удобный вариант для создания текста и его последующего форматирования с возможностью гибкой настройки шрифта, стиля написания, оформления самой страницы.

Описание базы данных.

На основе изучения процессов диспансеризации в Филиале №1 Поликлиники взрослых №1 Муниципального учреждения здравоохранения "Первая городская больница", была создана ER-модель базы данных (Приложение 1, Рисунок 2).

На данной модели отображены все существующие таблицы базы данных, а также связи между таблицами.

ER-модель базы данных создана с помощью онлайн-сервиса LucidChart.

Описание типов полей в каждой таблице базы данных отображены в (Приложение №2, Таблице 1).

Описание разработанных компонентов программной части ИС модуль "Диспансеризация".

В ходе процесса разработки программной части ИС модуль "Диспансеризация", был создан интерфейс, включающий в себя несколько частей:

- Окно авторизации пользователя;

- Окно работы со базой пациентов (поиск, фильтрация);

- Окно оформления пациента (определение статуса диспансеризации, печать учетной формы диспансеризации, оформление медицинского заключения);

- Окно оформления диагноза пациента.

1) Окно авторизации пользователя;

Окно авторизации пользователя отвечает за идентификацию пользователя в информационной системе (Приложение 1, Рисунок 3).

В данном модуле пользователю необходимо корректно ввести данные присвоенные ему (логин и пароль), а также после этого нажать на кнопку "Войти", после чего ИС проверит правильность введённых пользователем данных.

После того, как ИС проверит правильность введённых пользователем данных, то у пользователя появляется два пути дальнейших действий:

1) Информация введена корректно (появление кнопок "Пациенты" и "Выход");

2) Информация введена некорректно (появление сообщения: "Ошибка: проверьте правильность данных. ").

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

В окне авторизации расположены стандартные компоненты Borland Delphi 7 такие как:

· Label (надписи: авторизация, логин, пароль, пользователь);

· Edit (формы для ввода данных);

· Button (кнопка, отвечающая за проверку введённых пользователем данных).

· Image (компонент, содержащий фоновый рисунок окна регистрации)

2) Окно работы с данными пациентов (поиск, фильтрация);

Окно работы с данными пациентов отвечает за фильтрацию и поиск пациентов по установленным критериям (Приложение №1, Рисунок 4). Так же в данном окне расположены кнопки "Выход" и "Учетная форма диспансеризации пациента", отвечающие за полное закрытие всей программы и открытие окна с подробной информации о прохождении пациентом диспансеризации.

Данное окно разделено на несколько частей:

- Фильтрация (нижняя часть окна с маркерами для фильтрации данных);

- Отображение данных (верхняя часть окна с таблицей);

- Кнопки выбора действий (подзаголовок окна и нижний правый угол).

В части фильтрации расположены стандартные компоненты Borland Delphi 7 такие как:

· GroupBox (компонент, содержащий Labelс должностью и ФИО пользователя, работающего в данный момент с ИС).

· Label (метки, отвечающие за название маркеров фильтрации);

· Edit (графа для ввода данных с целью фильтрации и поиска);

В части отображения данных расположены стандартные компоненты Borland Delphi 7, такие как:

· DBGrid (компонент, отвечающий за вывод данных из таблицы, хранящихся в базе данных);

В части, содержащей кнопки выбора действия, расположены стандартные компоненты Borland Delphi 7, такие как:

· Button (кнопка, отвечающая переход к подробной информации пользователя)

· MainMenu (панель, находящаяся под заголовком окна, содержащая в себе кнопку выхода из программы)

3) Окно оформления пациента;

Окно оформления пациента отвечает, как за редактирование, так и за получение сведений о прохождении диспансеризации пациентом (Приложение №1, Рисунок 5).

Данное окно содержит стандартные компоненты Borland Delphi 7, такие как:

· Label (метки, отвечающие за название граф);

· Edit (графы с выведенными в них данными пациента);

· Button (кнопка "Печать паспорта здоровья" и кнопка "Заключение", отвечающая за открытие шаблона с полем для ввода мед. рекомендаций терапевта);

· ComboBox (поля для выбора значений);

· DBChart (диаграмма с информацией о пройденных мед. мероприятиях).

Создание учетной формы диспансеризации пациента (Учетная форма № 131/у) производится посредством обработки программой шаблона документа Microsoft Office Word. После нажатия на кнопку "Печать учетной формы диспансеризации", расположенной в правой части окна пациента, ИС открывает каталог документов с перечнем доступных шаблонов документов, расположенным в папке с программой, в котором пользователю необходимо выбрать подходящую форму документа. После процедуры выбора шаблона документа, ИС осуществит открытие выбранного шаблона и автоматическое заполнение граф данными об итогах прохождения диспансеризации выбранным пациентом.

Работа ИС с шаблоном документа MSWord осуществляется с помощью стандартного компонента BorlandDelphi 7 - OpenDialog, который по заданному в коде пути, открывает каталог с нужными документами и после выбора нужного документа, заполняет его данными.

Содержание программного модуля.

Программный модуль ИС состоит из одного файла формата". exe" и папки с файлами - doc (содержит шаблоны документов) и images (содержит иконки, фоны окон программы и логотипы).

Заключение

Темой данной дипломной работы является "Разработка ИС медицинского учреждения. Модуль ДИСПАНСЕРИЗАЦИЯ". Выбор данной темы был обусловлен актуальностью разработки ИС для учреждений здравоохранения в настоящее время.

Главной целью работы является: разработка программного продукта для автоматизации деятельности медицинских специалистов при проведении диспансеризации в медицинских учреждениях, в виде модуля ИС; снижение нагрузки на медперсонал, сокращения времени обслуживания пациентов, печати карт учета диспансеризации (Форма № 025/у-04), а также возможность использования в составе ИС модулей сторонних разработчиков.

Для разработки ИС был рассмотрен стандарт ГОСТ 34.601-90 "Автоматизированные системы. Стадии создания", описывающий, в частности, стадии разработки информационной системы. Опираясь на данный стандарт, разработка была разделена на стадии и выполнялась поэтапно, согласно данным, представленным в стандарте.

На первом этапе проводилось обследование объекта автоматизации и обоснование необходимости создания ИС, а так же формирование требований пользователя к ИС, в котором были представлены модели бизнес-процессов в нотации BPMN.

Вторым этапом являлась разработка Технического задания на создание ИС, в котором были описаны: назначение и цели создания ИС, характеристика объекта автоматизации, требования к ИС, этапы создания ИС.

Третьим этапом, согласно выбранному стандарту, стало создание Технического проекта, в котором описывается обоснование выбора среды разработки программой части разрабатываемого модуля, обоснование выбора CASE-средства разработки моделей бизнес-процессов, обоснование выбора СУБД, подробное описание базы данных.

Программная часть ИС была разделена на несколько модулей, подробное описание которых приводится в Техническом проекте. Поставленная задача была решена в нескольких программных продуктах: Borland Delphi 7 (разработка интерфейса программы), MySQL (создание базы данных) и Word (шаблон медицинской карты амбулаторного больного).

Заключительным этапом разработки ИС стало проведение предварительных испытаний на базе ОГБУЗ "Медицинский информационно-аналитический центр Костромской области". Проводилась опытная эксплуатация ИС на трёх компьютерах с операционной системой Windows XP - Professional, предоставленных для тестирования ПО, один из них являлся сервером. В течении испытаний было:

- оформлено прохождение диспансеризации 10 пациентов;

- распечатано 10 учетных форм диспансеризации (Форма № 131/у);

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

Цели и задачи, поставленные при создании дипломного проекта, были выполнены и реализованы в полной мере.

Глоссарий

№ п/п

Понятие

Значение

1

Бизнес-процесс

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

2

Диспансеризация

Система мер, направленных на сохранение здоровья населения, предупреждение развития заболеваний, снижение частоты обострений хронических заболеваний, развития осложнений, инвалидности, смертности и повышение качества жизни.

3

ИС

Информационная система.

4

ИСР

Интегрированная среда разработки

5

ИТ

Информационные технологии

6

КАПС

Комплекс аппаратно - программных средств

7

ОМС

Обязательное медицинское страхование

8

ЛПУ

Лечебно-профилактическое учреждение.

9

МИС

Медицинские информационные системы

10

СУБД

Система управления базами данных

11

BPMN

Графическая модель бизнес-процесса

12

CASE

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

Список литературы

1. Распоряжение Правительства РФ от 29.12.2014 N 2769-р "Об утверждении Концепции региональной информатизации"

2. Приказ Министерства здравоохранения от 13.02.2016 №36ан "Об утверждении порядка проведения диспансеризации определенных групп взрослого населения".

3. "ИТ в здравоохранении: от первых идей к современному состоянию" [Электронный ресурс] /Компьютерный еженедельник (http://www.pcweek.ru/idea/article/detail. php? ID=171454)

4. Устинова Г.М. Информационные системы менеджмента/ Учебное пособие. - СПб: Изд-во "ДиаСофт ЮП", 2000.

5. "Классификация информационных медицинский систем" [Электронный ресурс] /Информационный архив (http://studopedia.org/3-112172.html)

6. "Требования к МИС, передаваемым в фонд алгоритмов и программ Министерства здравоохранения и социального развития Российской Федерации, применяемым в Государственной информационной системе персонифицированного учета в здравоохранении Российской Федерации"№SBR1009140314-02-2.20.

7. ГОСТ 34.601-90 "Автоматизированные системы. Стадии создания"/ Государственный стандарт союза СССР, 1992

8. ФЕДЕРАЛЬНЫЙ ЗАКОН РОССИЙСКОЙ ФЕДЕРАЦИИ от 20 февраля 1995 г. N 24-ФЗ "Об информации, информатизации и защите информации" с изменениями от 10 января 2003 г.

Приложения

Приложение 1

Рисунок 1. Карта с пропорциональным изображением распространения лидирующих на рынке МИС по регионам РФ.

Рисунок 2. ER-модель базы данных.

Рисунок 3. Авторизация пользователя

Рисунок 4. Окно работы с данными пациентов

Рисунок 5. Окно оформления пациента

Диаграмма 1. Мед. работник. Авторизация

Диаграмма 2. Врач-терапевт. Первичный прием пациента

Диаграмма 3. Врач-терапевт. Вторичный прием.

Диаграмма 4. Мед. работник. Прием пациента.

Диаграмма 5. Занесение данных в БД;

Диаграмма 6. Запрос в БД.

Диаграмма 7. Запрос к пациенту.

Приложение 2

Таблица 1. Описание типов полей БД

Наименование таблицы

Наименование столбца

Тип поля

Таблица "Маршрутная карта" содержит данные с результатами приёмов пациентов у каждого из специалистов медицинского учреждения.

id_pz

INT

Опрос терапевтом

TEXT

Измерение АД

TEXT

ЭКГ

TEXT

Флюорография лёгких

TEXT

ЭФГДС

TEXT

Осмотр офтальмолога

TEXT

Осмотр невролога

TEXT

Осмотр врача хирурга

TEXT

УЗИ брюшной полости

TEXT

Other medical events (20)

TEXT

Таблица "Пациенты" содержит личные данные пациентов, прошедших процедуру регистрации в медицинском учреждении.

id_pz

INT

Фамилия

VARCHAR

Имя

VARCHAR

Отчество

VARCHAR

Пол

VARCHAR

Дата_рождения

VARCHAR

СНИЛС

VARCHAR

Полис_ОМС

VARCHAR

Адрес_фактический

VARCHAR

Телефон

VARCHAR

Other personal information (10)

VARCHAR

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

id

INT

id_pz

INT

Медмероприятие

CHAR

Диагноз

VARCHAR

Дата

DATE

Врач

VARCHAR

Оценкапоказателей

VARCHAR

Таблица "Медперсонал" содержит данные о персонале медицинского учреждения.

id_sotr

INT

id_dolzj

INT

id_bol

INT

ФИО

VARCHAR

Таблица "Пользователи ИС" содержит данные пользователей для работы с ИС.

id_sotr

INT

ФИО

VARCHAR

login

CHAR

password

CHAR

dostup

CHAR

Должность

VARCHAR

Таблица "Мед. Учреждение" содержит данные о медицинских учреждениях.

id_adr

INT

id_pz

INT

Адрес

VARCHAR

Таблица "Должности" содержит данные о должностях сотрудников медицинского учреждения

Наименование

CHAR

id_sotr

INT

id_medmer

INT

Таблица "МедМероприятия-Возраста" содержит данные с возрастами пациентов

id_medmer

INT

МедМерпориятие

CHAR

Список возрастов

INT

Таблица "Организации" содержит данные с местами работы пациентов

Id_org

INT

Id_pz

INT

Место работы

CHAR

Приложение 3

Листинг программного модуля ИС для медицинского учреждения.

Модуль "ДИСПАНСЕРИЗАЦИЯ"

1) DataModule;

unit Unit3;

interface

uses

SysUtils, Classes, DB, ADODB;

type

TDM1 = class (TDataModule)

ZConnection1: TADOConnection;

QueryUsers: TADOQuery;

QueryMedPersonal: TADOQuery;

QueryPacienty: TADOQuery;

QueryMarsh_Karta: TADOQuery;

QueryVozrastMedmer: TADOQuery;

QueryDiagnozy: TADOQuery;

ZQuery7: TADOQuery;

ZQuery8: TADOQuery;

QueryDiagnozyGraphik: TADOQuery;

DataUsers: TDataSource;

DataMedPersonal: TDataSource;

DataPacienty: TDataSource;

DataMarsh_Karta: TDataSource;

DataVozrastMedmer: TDataSource;

DataDiagnozy: TDataSource;

DataSource7: TDataSource;

DataSource8: TDataSource;

DataDiagnozyGraphik: TDataSource;

QueryBolnica: TADOQuery;

DataBolnica: TDataSource;

QueryOtchet: TADOQuery;

DataOtchet: TDataSource;

QueryPacientyid_pz: TAutoIncField;

QueryPacientyDSDesigner: TWideStringField;

QueryPacientyDSDesigner2: TWideStringField;

QueryPacientyDSDesigner3: TWideStringField;

QueryPacientyDSDesigner4: TWideStringField;

QueryPacientyDSDesigner5: TDateField;

QueryPacientyDSDesigner6: TWideStringField;

QueryPacientyDSDesigner7: TWideStringField;

QueryPacientyDSDesigner8: TWideStringField;

QueryPacientyDSDesigner9: TWideStringField;

QueryPacientyDSDesigner10: TWideStringField;

QueryPacientyDSDesigner11: TWideStringField;

QueryPacientyDSDesigner12: TWideStringField;

QueryPacientyDSDesigner13: TWideStringField;

QueryPacientyDSDesigner14: TWideStringField;

QueryPacientyDSDesigner15: TWideStringField;

QueryPacientyDSDesigner16: TWideStringField;

QueryPacientyDSDesigner17: TDateField;

QueryPacientyDSDesigner18: TIntegerField;

procedure DataModuleCreate (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

DM1: TDM1;

implementation

{$R *. dfm}

end.

2) Главная форма терапевта;

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, ExtCtrls, Grids, DBGrids, Unit7, TeeProcs, TeEngine,

Chart, DbChart, StdCtrls, DateUtils, DBCtrls, Series, Mask;

type

TForm1 = class (TForm)

DBGrid2: TDBGrid;

MainMenu1: TMainMenu;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

OpenDialog1: TOpenDialog;

Panel5: TPanel;

RadioGroup2: TRadioGroup;

GroupBox1: TGroupBox;

Label1: TLabel;

Label3: TLabel;

Label2: TLabel;

Label4: TLabel;

Panel1: TPanel;

Panel3: TPanel;

RadioGroup1: TRadioGroup;

Panel2: TPanel;

Panel4: TPanel;

GroupBox2: TGroupBox;

Edit1: TEdit;

Button2: TButton;

procedure N4Click (Sender: TObject);

procedure DBGrid2Enter (Sender: TObject);

procedure DBGrid2CellClick (Column: TColumn);

procedure DBGrid1DrawColumnCell (Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

{ procedure N1Click (Sender: TObject);

procedure N2Click (Sender: TObject);

procedure N3Click (Sender: TObject); }

procedure N6Click (Sender: TObject);

{ procedure FormCreate (Sender: TObject); }

procedure DBGrid1DblClick (Sender: TObject);

procedure Button2Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

NowYear, s,ClWhere: string;

fontstyle: integer;

implementation

uses

ComObj, Unit3, Unit4, Unit5, Unit6, Unit8;

{$R *. dfm}

// Функция записывает новый текст для закладки с именем aBmName.

// Функция возвращает значение True, если закладка найдена и её текст изменён

// и False - если закладка не найдена.

// Переустановка текста закладки выплоняется так:

// - Получаем ссылку на объект-диапазон, который содержит текст закладки.

// - Удаляем закладку.

// - Устанавливаем новый текст для объекта-диапазона.

// - Создаём новую закладку с диапазоном, который содержит новый текст.

function SetBmText (var aBms: Variant; const aBmName, aText: String): Boolean;

var

Bm, Rng: Variant;

begin

// Проверяем - существует ли закладка с заданным именем.

Result: = aBms. Exists (aBmName);

// Если закладка не найдена - выходим.

if not Result then Exit;

// Ссылка на закладку.

Bm: = aBms. Item (aBmName);

// Ссылка на диапазон, связанный с закладкой.

Rng: = Bm. Range;

// Удаление закладки.

Bm. Delete;

// Заменяем текст в диапазоне.

Rng. Text: = aText;

// Добавляем новую закладку с таким же именем.

// aBms. Add (aBmName, Rng);

end;

procedure TForm1. N4Click (Sender: TObject);

begin

Application. Terminate;

end;

procedure TForm1. DBGrid2Enter (Sender: TObject);

begin

{DM1. QueryDiagnozy. Close;

DM1. QueryDiagnozy. SQL. Text: = ('SELECT DISTINCT * FROM diagnozy WHERE diagnozy. id_pz='+clWhere);

DM1. QueryDiagnozy. Open; }

end;

procedure TForm1. DBGrid2CellClick (Column: TColumn);

var

years, i,d,n, KolvoStrokDiag: integer;

Clwhere2,x,ClwhereOcenka,ClWherePZ, NowYear: string;

x1,x2,x3,x4,x5,proverka: real;

mas: array [1.27] of integer;

begin

Form8. Series1. Clear;

proverka: =0;

x5: =0;

// Label3. Caption: =DBText2. Caption+' '+DBText3. Caption+' '+DBText4. Caption;

DM1. QueryVozrastMedmer. Close;

// Label2. Font. Color: =clRed;

// Label4. Visible: =true;

Clwhere: =DBGrid2. DataSource. DataSet. Fields [0]. AsString;

DM1. QueryDiagnozy. Close;

DM1. QueryDiagnozy. SQL. Text: = ('SELECT DISTINCT * FROM diagnozy WHERE diagnozy. id_pz='+clWhere);

DM1. QueryDiagnozy. Open;

Clwhere: =DBGrid2. DataSource. DataSet. Fields [0]. AsString;

DM1. QueryDiagnozy. Close;

DM1. QueryDiagnozy. SQL. Text: = ('SELECT DISTINCT * FROM diagnozy WHERE diagnozy. id_pz='+clWhere);

DM1. QueryDiagnozy. Open;

end;

procedure TForm1. DBGrid1DrawColumnCell (Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

var

DiagnozDate: TDateTime;

DiagnozYear: string;

i,KolvoStrok,proverka: integer;

DateY,DateM,DateD,DateHour,DateMin,DateSec: Word;

Clwhere2: string;

begin

Clwhere: =DBGrid2. DataSource. DataSet. Fields [0]. AsString;

Clwhere2: =Form8. DBGrid1. DataSource. DataSet. Fields [1]. AsString;

DM1. ZQuery7. Close;

DM1. ZQuery7. SQL. Text: = ('SELECT DISTINCT * FROM diagnozy WHERE diagnozy. id_pz='+clWhere+' and diagnozy. МедМероприятие='+#39+ClWhere2+#39);

DM1. ZQuery7. Open;

NowYear: = FormatDateTime ('yyyy', Now);

KolvoStrok: =Form5. DBGrid1. DataSource. DataSet. RecordCount;

if KolvoStrok=0 then exit

else

for i: =1 to KolvoStrok do

begin

proverka: =0;

DecodeDate (StrToDate (Form5. DBGrid1. DataSource. DataSet. FieldByName ('Дата'). AsString),DateY, DateM, DateD);

// DiagnozDate: =StrToDate (Form5. DBGrid1. DataSource. DataSet. Fields [3]. AsString);

// DecodeDate (DiagnozDate, DateY, DateM, DateD);

DiagnozYear: =IntToStr (DateY);

IF DiagnozYear=NowYear{ условие }

Then Begin

Form8. DBGrid1. Canvas. Brush. Color: =clGreen;

Form8. DBGrid1. Canvas. Font. Color: =clWhite;

Form8. DBGrid1. Canvas. FillRect (Rect);

proverka: =1;

end

else

begin

Form8. DBGrid1. Canvas. Brush. Color: =clTeal;

Form8. DBGrid1. Canvas. Font. Color: =clWhite;

Form8. DBGrid1. Canvas. FillRect (Rect);

End;

// если строка была выделена, оставляем "подсвеченные" цвета

{IF gdSelected IN State

Then Begin

TDBGrid (Sender). Canvas. Brush. Color: = clHighLight;

TDBGrid (Sender). Canvas. Font. Color: = clHighLightText;

DBGrid1. Canvas. FillRect (Rect);

End; }

TDBGrid (Sender). DefaultDrawColumnCell (Rect,DataCol,Column,State);

if proverka=1 then break else

Form5. DBGrid1. DataSource. DataSet. Next;

end;

end;

{

procedure TForm1. N1Click (Sender: TObject);

begin

dbgrid3. Visible: =false;

dbgrid1. visible: =true;

panel2. Visible: =false;

end;

procedure TForm1. N2Click (Sender: TObject);

begin

dbgrid1. Visible: =false;

dbgrid3. visible: =true;

panel2. Visible: =false;

end;

procedure TForm1. N3Click (Sender: TObject);

begin

panel2. Visible: =true;

end;

}

procedure TForm1. N6Click (Sender: TObject); // ОТЧЕТ

var

wdApp, wdDocs, wdDoc, wdBms: Variant;

Od: TOpenDialog;

begin

Od: = OpenDialog1;

if Od. InitialDir = '' then

Od. InitialDir: = ExtractFilePath (Application. ExeName)

;

Od. Title: = 'Выберите шаблон, на основе которого будет создан новый документ';

if not Od. Execute then Exit;

if not FileExists (Od. FileName) then begin

MessageDlg (

'Файл с заданным именем не найден. Действие отменено. '

,mtWarning, [mbOK], 0

);

Exit;

end;

try

wdApp: = CreateOleObject ('Word. Application');

except

ShowMessage ('Не удалось запустить MS Word. Действие отменено. ');

Exit;

end;

// Делаем видимым окно MS Word.

wdApp. Visible: = True;

// Ссылка на коллекцию документов.

wdDocs: = wdApp. Documents;

// Попытка открыть выбранный файл.

wdDoc: = wdDocs. Open (FileName: =Od. FileName);

// Подключаемся к коллекции закладок.

wdBms: = wdDoc. Bookmarks;

// Ищем закладки с нужными именами и изменяем их текст, в соответствие

// с данными, введёнными на форме.

try

SetBmText (wdBms, 'id_pz', DM1. QueryPacienty. FieldByName ('id_pz'). AsString);

SetBmText (wdBms, 'data_ofrml',DM1. QueryPacienty. FieldByName ('Дата оформления'). AsString);

SetBmText (wdBms, 'n_bol',DM1. QueryBolnica. FieldByName ('Наименование'). AsString);

SetBmText (wdBms, 'adr_bol',DM1. QueryBolnica. FieldByName ('Адрес'). AsString);

SetBmText (wdBms, 'kod_bol',DM1. QueryBolnica. FieldByName ('Код ОГРН'). AsString);

SetBmText (wdBms, 'FIO', DM1. QueryPacienty. FieldByName ('Фамилия'). AsString + ' ' + DM1. QueryPacienty. FieldByName ('Имя'). AsString + ' ' + DM1. QueryPacienty. FieldByName ('Отчество'). AsString);

SetBmText (wdBms, 'Data_rozhd', DM1. QueryPacienty. FieldByName ('Дата рождения'). AsString);

SetBmText (wdBms, 'pol', DM1. QueryPacienty. FieldByName ('Пол'). AsString);

SetBmText (wdBms, 'pasport', DM1. QueryPacienty. FieldByName ('Паспорт'). AsString);

SetBmText (wdBms, 'adres_pac', DM1. QueryPacienty. FieldByName ('Адрес'). AsString);

SetBmText (wdBms, 'telephon', DM1. QueryPacienty. FieldByName ('Телефон'). AsString);

SetBmText (wdBms, 'nomer_polis', DM1. QueryPacienty. FieldByName ('Полис ОМС'). AsString);

{QueryOtchet}

// Дописать поле DataTime в запросе

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Заключение врача терапевта' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'terapevt', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Антропометрия' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'antropometria', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Измерение АД' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'izmerenie_ad', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Уровень общего холестерина в крови' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'holesterin', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Определение уровня глюкозы в крови' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'glukoza', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Определение суммарного сердечно-сосудистого риска' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'serdechny_risk', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'ЭКГ (мужчины) ' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'ekg', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Осмотр фельдшера' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'osm_feldsher', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Флюорография легких' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'flurogramma', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Маммография' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'mammographia', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Клинический анализ крови' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'klin_analiz_krovi', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Клинический анализ крови развернутый' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'klin_analiz_krovi_razv', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Анализ крови биохимический общетерапевтический' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'bio_analiz_krovi', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Общий анализ мочи' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'mocha', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Исследование кала на скрытую кровь' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'kal', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Определение уровня ПСА в крови' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'psa', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'УЗИ органов брюшной полости' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'uzi', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Измерение внутриглазного давление' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'glaz_davl', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Дуплексное сканирование брахиоцефальных артерий' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'dsb_art', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'ЭФГДС' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'efgds', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Осмотр врача хирурга' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'osm_vrach_hirurg', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Осмотр врача хирурга-проктолога' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'osm_vrach_hirurg_proct', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Колоноскопия (ректороманоскопия) ' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'kolonoskopia', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Определение липидного спектра крови' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'spectr_krovi', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Осмотр врача акушера-гинеколога' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'akusher', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Определение концентрации гликированного Hb в крови' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'konc_hb_krovi', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Осмотр врача офтальмолога' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'oftalmolog', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

DM1. QueryOtchet. SQL. Text: = 'Select * from diagnozy where id_pz = '+ #39 + ClWhere + #39 + ' and ' + 'МедМероприятие = ' + #39 + 'Осмотр врача невролога' + #39;

DM1. QueryOtchet. Open;

SetBmText (wdBms, 'nevrolog', DM1. QueryOtchet. FieldByName ('Диагноз'). AsString);

finally

// Сохранять документ следует под другим именем, чтобы не перезаписать шаблон.

// wdApp. DisplayAlerts: = False; // Отключаем режим показа предупреждений.

// wdDoc. SaveAs (FileName: =.);

// wdApp. DisplayAlerts: = True; // Включаем режим показа предупреждений.

// Закрываем документ.

// wdDoc. Close;

// Закрываем MS Word.

// wdApp. Quit;

end;

end; {

procedure TForm1. FormCreate (Sender: TObject);

begin

Panel2. Visible: =false;

DBGrid3. Visible: =false;

end; }

procedure TForm1. DBGrid1DblClick (Sender: TObject);

var

Clwhere2: string;

begin

Clwhere: =DM1. QueryPacienty. FieldByName ('id_pz'). AsString;

Clwhere2: =DM1. QueryVozrastMedmer. FieldByName ('МедМероприятие'). AsString;

DM1. ZQuery8. Close;

DM1. ZQuery8. SQL. Text: = ('SELECT DISTINCT * FROM diagnozy WHERE diagnozy. id_pz='+clWhere+' and diagnozy. МедМероприятие='+#39+ClWhere2+#39);

DM1. ZQuery8. Open;

Form5. Show;

end;

procedure TForm1. Button2Click (Sender: TObject);

begin

Form8. RadioGroup1. ItemIndex: =-1;

Form8. RadioGroup1. ItemIndex: =0;

Form8. ShowModal;

end;

end.

3) Главная форма мед. работника;

unit Unit5;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, ExtCtrls, Grids, DBGrids, TeeProcs, TeEngine,

Chart, DbChart, StdCtrls, DateUtils, DBCtrls, Series, Mask, jpeg;

type

TForm2 = class (TForm)

DBGrid1: TDBGrid;

DBGrid2: TDBGrid;

MainMenu1: TMainMenu;

N1: TMenuItem;

procedure DBGrid2DblClick (Sender: TObject);

procedure N1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses

Unit1, Unit3, Unit4, Unit6, Unit7;

{$R *. dfm}

procedure TForm2. DBGrid2DblClick (Sender: TObject);

var

Clwhere2, id_pz: string;

begin

id_pz: =DM1. QueryPacienty. FieldByName ('id_pz'). AsString;

Clwhere2: =DM1. QueryVozrastMedmer. FieldByName ('МедМероприятие'). AsString;

DM1. ZQuery8. Close;

DM1. ZQuery8. SQL. Text: = ('SELECT DISTINCT * FROM diagnozy WHERE diagnozy. id_pz='+id_pz+' and diagnozy. МедМероприятие='+#39+ClWhere2+#39); DM1. ZQuery8. Open;

Form5. Show;

end;

procedure TForm2. N1Click (Sender: TObject);

begin

application. terminate;

end;

end.

4) Форма редактирования диагноза;

unit Unit6;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, DBCtrls, Mask, Menus;

type

TForm3 = class (TForm)

DBEdit1: TDBEdit;

DBEdit3: TDBEdit;

dbedtid_pz: TDBEdit;

DBMemo1: TDBMemo;

Edit1: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Button1: TButton;

Button2: TButton;

Label5: TLabel;

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses

Unit1, Unit3, Unit4, Unit5, Unit7;

{$R *. dfm}

procedure TForm3. Button1Click (Sender: TObject);

begin

if dm1. QueryDiagnozy. Modified then

dm1. QueryDiagnozy. Post;

end;

procedure TForm3. Button2Click (Sender: TObject);

begin

Form3. Close;

end;

end.

5) Форма список диагнозов;

unit Unit7;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, Grids, DBGrids;

type

TForm5 = class (TForm)

DBGrid1: TDBGrid;

MainMenu1: TMainMenu;

N1: TMenuItem;

DBGrid2: TDBGrid;

procedure N1Click (Sender: TObject);

procedure FormShow (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

uses

Unit1, Unit3, Unit4, Unit5, Unit6;

{$R *. dfm}

procedure TForm5. N1Click (Sender: TObject);

begin

DM1. QueryDiagnozy. Close;

DM1. QueryDiagnozy. Open;

DM1. QueryDiagnozy. Append;

DM1. QueryDiagnozy. FieldByName ('Дата'). AsString: =DateToStr (Date);

DM1. QueryDiagnozy. FieldByName ('МедМероприятие'). AsString: =DM1. QueryVozrastMedmer. FieldByName ('МедМероприятие'). AsString;

DM1. QueryDiagnozy. FieldByName ('id_pz'). AsString: =DM1. QueryPacienty. FieldByName ('id_pz'). AsString;

Form3. Edit1. Text: =DM1. QueryPacienty. FieldByName ('Фамилия'). AsString+' '+DM1. QueryPacienty. FieldByName ('Имя'). AsString+' '+DM1. QueryPacienty. FieldByName ('Отчество'). AsString;

DM1. QueryDiagnozy. Post;

form3. show;

end;

procedure TForm5. FormShow (Sender: TObject);

begin

if dostup <> 1 then

N1. Visible: =False;

end;

end.

6) Форма пациента;

unit Unit8;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, ExtCtrls, Grids, DBGrids, Unit7, TeeProcs, TeEngine,

Chart, DbChart, StdCtrls, DateUtils, DBCtrls, Series, Mask, ComCtrls;

type

TForm8 = class (TForm)

Panel2: TPanel;

DBChart1: TDBChart;

Series1: TPieSeries;

Label10: TLabel;


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.