Автоматизация деятельности поликлиники на основе объектно- ориентированного подхода

Автор: Поварницын Е.Н.

Журнал: Форум молодых ученых @forum-nauka

Статья в выпуске: 8 (48), 2020 года.

Бесплатный доступ

Статья посвящается рассмотрению предметной области поликлиники. А также разработка программы по данной области на языке программирования Python.

Предметная область, поликлиника, программирование

Короткий адрес: https://sciup.org/140288134

IDR: 140288134

Текст научной статьи Автоматизация деятельности поликлиники на основе объектно- ориентированного подхода

Annotation:

The article is devoted to the subject area of polyclinics. As well as developing a program in this area in the Python programming language.

Keyword:

Python,          subject          area,          clinic,          programming.

1 ПРЕДМЕТНАЯ ОБЛАСТЬ

  • 1.1    Вербальное описание

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

В ее функции входят:

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

  • б)    лечение больных при обращении в поликлинику и на дому;

  • в)    организация и проведение диспансеризации;

  • г)    экспертиза временной нетрудоспособности;

  • д)    освобождение больных от работы;

  • е)    направление на врачебно-трудовую экспертную комиссию лиц с признаками стойкой утраты трудоспособности;

  • ж)    направление больных на санаторно-курортное лечение;

  • з)    своевременная госпитализация нуждающихся в стационарном лечении.

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

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

Информация на каждого врача, а именно имя, фамилия отчество, дата рождения, специальность, квалификация и должность расположена в архиве поликлиники.

  • 1.2    Концептуальное описание

В данном сервисе персонал регистратуры будет заполнять карточку визитов пациентов к определённым врачам, так же заполнять саму карточку пациента и информацию о враче. Объектами системы будет врач и пациент, специальность врача, болезни, визит. Свойства объектов приведены в таблице 1.

Таблица 1 – Свойства объектов

Наименование объекта

Свойства объекта

Пациент

Имя пациента

Фамилия пациента

Возраст пациента

Лечащий врач

Врач

Имя врача

Фамилия врача

Специальность врача

Болезнь

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

  • -    Гастрит

  • -    Язва

  • -    Порок сердца

  • -    Сотрясение мозга

  • -    Простуда

  • -    Коронавирус

  • -    Ухудшение зрения

  • -    Потеря уха

  • -    Болезней нет

Специальность врача

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

  • -    Глав врач

  • -    Кардиолог

  • -    Гастроэнтеролог

  • -    Терапевт

  • -    Окулист

  • -    Лор

Визит

Пациент

Врач

Болезнь

Определяем ограничения:

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

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

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

Схема взаимодействий представлена на рисунке 1.

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

  • 2    РАЗРАБОТКА ПРОГРАММНЫХ МОДУЛЕЙ

Для примера будет взята реализация страницы визита пациентов к врачам. Для этого создаём py файл. Здесь необходимо реализовать для начала счётчик ИД. Он будет выглядеть в соответствии с рисунком 2.

Рисунок 2 – Счётчик ИД

Здесь будет реализоваться глобальная переменная _next и метод, который будет прибавлять +1 при каждом его вызове.

Далее рассмотрим класс Visit, данный класс будет хранить объекты, такие как ИД посещения, пациента, врача и болезнь. Данные объекты создадим приватными, а также добавим сеттеры для данных объектов и setter’ы, которые позволят обращаться к объектам как к функциям. Для Id необходимы сеттеры для последующего тестирования методов в системе. Выглядеть это будет в соответствии с рисунком 3.

def         (self. pacient, doctor, bolezn):

^property def pacient(self): FVVVVVVVVVVSA.'        *

return self.__pacient

self, pacient = value

I VAWVvWVv

Рисунок 3 – Класс Visit

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

Рисунок 4 – Абстрактный класс

Далее можно создавать класс, который будет взаимодействовать с базой, методе __init__ следует прописать ссылку на класс, индекс, равный 0, что позволит 6

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

def          (self):

self.mainDirectory = Path(__file__).parent.parent self.file = str(self.mainDirectory) + self.file self.doctorPath = str(self.mainDirectory) + self.doctorPath self.pacientPath = str(self.mainDirectory) + self.pacientPath V-Z-Z-Z-Z-Z-Z-Z-Z-Z-/-Z-                                '                                                     V X                         I self.boleznPath = str(self.mainDirectory) + self.boleznPath self.db = {} self.doctors = {} self.pacients = {} self.bolezns = {}

Рисунок 5 – Обозначение базы

После чего необходимо создать методы, позволяющие считывать и сохранять данные, в соответствии с рисунком 6.

def open_db(self):

def open_doctor_db(self):

def open_pacients_db(:e):

def open_bolezns_db(5elf):

def save_db(self):

Рисунок 6 – Чтение и запись данных

После чего добавим методы, которые будут срабатывать при нажатии на кнопки в самой программе. Первый метод позволит добавлять данные в базу. В него будут передаваться объект пациента, врача и болезнь. Далее будет автоматически приписываться ИД, обновляться данные и после чего сохраняться в базе. Код будет выглядеть в соответствии с рисунком 7.

def add(self, pacient, doctor,bolezn): '                                      vVV'W'W'VWW'*

visit = Visit(pacient, doctor, bolezn)

self.save_db()

Рисунок 7 – Добавление данных

Кнопки далее и назад будут иметь схожий код, поэтому рассмотрим их обобщенно. Если данных методах будет происходить ошибка, то выйдет окно о том, что эта страница либо последняя, либо первоначальная. Если же массив индекса будет равен ключу данных базы, то данные поменяются на следующие или же возвратятся назад. Код кнопки next будет выглядеть в соответствии с рисунком 8.

Рисунок 8 – Метод следующей страницы

Далее рассмотрим метод удаления, в нём просто передаётся ИД посещения и через него удаляются данные, код выглядит в соответствии с рисунком 9.

Рисунок 9 - Метод удаления

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

def fillComboboxDoctor( ? f): AAAXVVVVVVVVVVVVVVVVVVVVVVVVVVVV '       '

self.open_doctor_db()

return self.doctors

Рисунок 10 – Метод комбо бокса

Полный код модели будет показан в приложении А.

Далее рассмотрим вид раздела посещений. В нём нужно объявить какая кнопка к какому методу относится, далее нужно прописать эти методы, ссылаясь на тот код, который был разобран в модели раздела посещений. Код с присвоением команд и кнопок будет выглядеть в соответствии с рисунком 11.

def          (self, ui, Model):

Рисунок 11 – Присвоение кнопок и методов

Так же необходимо сделать окно вызвав программы, которая будет использовать и модель, и вид. Код будет выглядеть в соответствии с рисунком 12.

def          (self):

super(MyWindow, self).         ()

Рисунок 12 – Запуск приложения

Таким образом, если соблюдать все шаги разработки, то получиться полноценная программа с чтением, записью, удалением и редактированием данных. Окно посещений будет выглядеть в соответствии с рисунком 13.

Рисунок 13 – Окно приложения

  • 3    ТЕСТИРОВАНИЕ ПРОГРАММНЫХ МОДУЛЕЙ

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

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

Проверим смогут ли принимать и получать данные программа, для этого пропишем код для принятия и получения данных, в соответствии с рисунком 14.

def testGetPacient(sel-):

test value = 'pacient'

def testSetPacient(sel):

test value = 'new pacient’ ---                                        t--.-v'vv'vv'vv'vv'v- received value = 'new pacient'

Рисунок 14 – Unit test

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

Если всё было составлено правильно, то в результате при запуске получаем положительный результат в соответствии с рисунком 15.

Рисунок 15 – Результат тестирования

Так же были произведены тесты методов. Брался метод добавления и удаления данных. Код выглядит в соответствии с рисунком 16.

Рисунок 16 – Тестирование методов

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

Статья научная