OPTIMISING MODEL of STRUCTURE of PHARMACOLOGICAL DBMS With USE of PROCEDURES, FUNCTIONS AND TRIGGERS
- Authors: Sudakov OV1, Gladskikh NA1, Alekseev NY.1, Kuzmenko NY.1, Bogacheva EV1, Levda AV1
-
Affiliations:
- Voronezh State Medical University
- Issue: Vol 21, No 1 (2018)
- Pages: 210-215
- Section: Articles
- URL: https://new.vestnik-surgery.com/index.php/2070-9277/article/view/2152
- DOI: https://doi.org/10.18499/2070-9277-2018-21-1-210-215
Cite item
Full Text
Abstract
Keywords
Full Text
Актуальность. Правильно разработанная и внедренная формулярная система позволяет исключить из лечебного процесса недостаточно эффективные препараты и способствует снижению уровня заболеваемости и смертности, сокращению продолжительности лечения и пребывания больных в стационаре [1, 3, 6]. Для того чтобы определить, насколько рационально расходуются имеющиеся средства на приобретение лекарственных препаратов, необходимо провести так называемый ABC/VEN-анализ используемых медикаментов. Полученные результаты и их обсуждение. Разработанная в ходе исследования БД использует следующие таблицы, связанные между собой: DEPARTMENT, FORMA, PREPARAT и MAINTABLE. Таблица DEPARTMENT является справочником отделений. Она содержит информацию обо всех отделениях, имеющихся в ЛПУ, пополняется пользователем и содержит функцию проверки на дубли. Создание этой таблицы описывается следующим скриптом: CREATE TABLE DEPARTMENT ( DEP_ID INTEGER NOT NULL, DEP_NAME VARCHAR(50) NOT NULL, PRIMARY KEY (DEP_ID), UNIQUE (DEP_NAME) ); Поле DEP_ID таблицы - это идентификатор отделения. Оно является первичным ключом. Поле DEP_NAME - это название отделения. Ограничение UNIQUE служит для предотвращения появления в данном столбце дубликатов. Таблица FORMA является справочником форм выпуска. Она содержит поля FORM_ID - идентификатор формы выпуска (первичный ключ), FORM - название (т.е. таблетки, ампулы, капсулы и т.д.), VOL - объем (количество) препарата и ED - единица измерения (т.е мг, мл, шт, уп. и т.д.) Создание этой таблицы в базе данных описывается следующим скриптом: CREATE TABLE FORMA ( FORM_ID INTEGER NOT NULL, FORM VARCHAR(10) NOT NULL, VOL NUMERIC(15, 2) NOT NULL, ED VARCHAR(10) NOT NULL, CONSTRAINT FORM_UNIQUE UNIQUE (FORM, VOL, ED), PRIMARY KEY (FORM_ID) ); Ограничение UNIQUE на все три поля ввелось для предотвращения ввода в справочник форм выпуска нескольких одинаковых сток и тем самым предотвращения хранения в БД лишней информации и разрастания ее размера. Таблица PREPARAT является справочником препаратов. Она содержит поля PREP_ID - идентификатор препарата (первичный ключ), NAME - торговое название лекарственных средств, INTERNAME - международное название лекарственных средств, FORM_ID - идентификатор формы выпуска (внешний ключ, ссылающийся на таблицу FORMA, т.е. на справочник форм выпуска) и VEN - класс препарата (v - жизненно важные, e - необходимые или n - второстепенные). Скрипт создания таблицы PREPARAT выглядит следующим образом: CREATE TABLE PREPARAT ( PREP_ID INTEGER NOT NULL, NAME VARCHAR(30) NOT NULL, INTERNAME VARCHAR(30) NOT NULL, FORM_ID INTEGER NOT NULL, VEN CHAR(1) NOT NULL, PRIMARY KEY (PREP_ID), CONSTRAINT PREP_UNIQUE UNIQUE (NAME, INTERNAME) ); ALTER TABLE PREPARAT ADD CONSTRAINT PREP_FOREIGN FOREIGN KEY (FORM_ID) REFERENCES FORMA (FORM_ID); ALTER TABLE PREPARAT ADD CONSTRAINT VEN_CHECK check (ven='v' or ven='e' or ven='n' ); Здесь ограничение UNIQUE для полей NAME, INTERNAME создано для предотвращения появления дубликатов препаратов. В данном случае несколько препаратов с разными торговыми названиями могут иметь одинаковое международное название. Поэтому здесь введено ограничение по двум полям. Ограничение CHECK на поле VEN поставлено, чтобы гарантировать выбор только одного из трех возможных вариантов. Таблица MAINTABLE содержит информацию о закупках. Она состоит из полей MAIN_ID - идентификатор закупки (первичный ключ), PREP_ID - идентификатор закупаемого препарата (внешний ключ, ссылающийся на таблицу PREPARAT, т.е. справочник препаратов), PUR_DATE - дата закупки, DEP_ID - идентификатор отделения, закупившего препарат (внешний ключ, ссылающийся на таблицу DEPARTMENT, т.е. справочник отделений), PRICE - цена одной единицы препарата и KOLVO - количество единиц. Скрипт, создающий эту таблицу, выглядит следующим образом: CREATE TABLE MAINTABLE ( MAIN_ID INTEGER NOT NULL, PREP_ID INTEGER NOT NULL, PUR_DATE TIMESTAMP NOT NULL, DEP_ID INTEGER NOT NULL, PRICE NUMERIC(15, 2) NOT NULL, KOLVO INTEGER NOT NULL, PRIMARY KEY (MAIN_ID) ); ALTER TABLE MAINTABLE ADD CONSTRAINT MAIN_FOREIGN_DEP FOREIGN KEY (DEP_ID) REFERENCES DEPARTMENT (DEP_ID); ALTER TABLE MAINTABLE ADD CONSTRAINT MAIN_FOREIGN_PREP FOREIGN KEY (PREP_ID) REFERENCES PREPARAT (PREP_ID); ALTER TABLE MAINTABLE ADD CONSTRAINT KOLVO_CHECK check (kolvo>=0); ALTER TABLE MAINTABLE ADD CONSTRAINT PRICE_CHECK check (price>=0); Здесь также были созданы ограничения на поля таблицы. Цена и количество препарата должны быть неотрицательны. По логике предметной области, никаких ограничений на уникальность полей в таблице MAINTABLE здесь быть не должно. Для получения уникальных автоинкрементных значений идентификаторов были созданы генераторы. Скрипт их создания выглядит следующим образом: CREATE GENERATOR GEN_DEP_ID; SET GENERATOR GEN_DEP_ID TO 0; CREATE GENERATOR GEN_FORM_ID; SET GENERATOR GEN_FORM_ID TO 0; CREATE GENERATOR GEN_MAIN_ID; SET GENERATOR GEN_MAIN_ID TO 0; CREATE GENERATOR GEN_PREP_ID; SET GENERATOR GEN_PREP_ID TO 0; Для заполнения ключевого поля новой записи уникальным значением для каждой таблицы были созданы триггеры: CREATE TRIGGER DEPARTMENT_BI0 FOR DEPARTMENT ACTIVE BEFORE INSERT POSITION 0 AS Begin if (new.dep_id is null) then new.dep_id = gen_id(gen_dep_id, 1); end ^ CREATE TRIGGER FORMA_BI0 FOR FORMA ACTIVE BEFORE INSERT POSITION 0 AS begin if (new.form_id is null) then new.form_id = gen_id(gen_form_id, 1); end ^ CREATE TRIGGER MAINTABLE_BI0 FOR MAINTABLE ACTIVE BEFORE INSERT POSITION 0 AS begin if (new.main_id is null) then new.main_id = gen_id(gen_main_id, 1); end ^ Для обеспечения ссылочной целостности и организации правил изменения нескольких таблиц в рамках одной транзакции были созданы триггеры: CREATE TRIGGER DEPARTMENT_AD0 FOR DEPARTMENT ACTIVE AFTER DELETE POSITION 0 AS begin delete from maintable where maintable.dep_id = department.dep_id; end Например, при удалении препарата из справочника стираются все записи об этом препарате из таблицы закупок препаратов. Аналогичные действия выполняются и для справочников отделений и форм выпуска. Таблица MAINTABLE не содержит родительских ключей, так что для нее создание такого триггера нецелесообразно. ABC-анализ лекарственных средств проводится с помощью хранимых SELECT-процедур. Процедура GET_CALC осуществляет предварительный расчет. В качестве входных параметров в нее передаются дата начала периода времени, за который требуется провести ABC-анализ (DL), дата окончания (DH) и идентификатор отделения, по которому производится ABC-анализ. Выходными параметрами являются PREP_ID - идентификатор препарата, INTERNAME - международное название, NAME - торговое название, PRICE - средняя цена единицы препарата с заданным идентификатором, KOLVO - суммарное количество препаратов с заданным идентификатором, SUM_NAME - сумма по торговым названиям, SUM_INTERNAME - общая сумма (сумма по международным названиям), TOTAL - торговая сумма (сумма всех средств, потраченных на лекарственные средства в заданный период времени в заданном отделении), PER_INTERNAME - процент от общей суммы, PER_TOTAL - процент от торговой суммы Вторая процедура GET_ABC создана для расчета кумулятивного процента и определения категории ABC препарату с заданным идентификатором. Поскольку вся основная функциональность программного продукта осуществляется на уровне БД, то написание клиентского приложения свелось практически только к размещению на формах программы обязательных компонентов (TIBDataBase, TIBTransaction), соответствующих визуальных (TDBGrid, TDBChart, TDBEdit, TDBLookUpComboBox) и невизуальных (TIBDataSet, TIBQuery) компонентов, предназначенных для работы с базами данных, соответствующей их настройке, организации ввода определяемой пользователем информации, и передаче хранимым процедурам соответствующих параметров [2 4, 5]. Выводы. База данных, автоматизирующая ABC-VEN анализ движения лекарственных средств в ЛПУ, и клиентское приложение, осуществляющее взаимодействие с ней позволяет проводить сбор и хранение информации о закупках препаратов и ее обработку, выдавать результаты ABC-VEN анализа в установленной форме. Дружественный интерфейс и справочная система позволяет работать с данным продуктом людям, не имеющим специальной подготовки для работы с ЭВМ.About the authors
O V Sudakov
Voronezh State Medical University
N A Gladskikh
Voronezh State Medical University
N Yu Alekseev
Voronezh State Medical University
N Yu Kuzmenko
Voronezh State Medical University
E V Bogacheva
Voronezh State Medical University
A V Levda
Voronezh State Medical University
References
- Гладских Н.А. Разработка методов классификационно-прогностического моделирования в системе кадрового обеспечения территориального здравоохранения / диссертация на соискание ученой степени кандидата технических наук // ВГТУ. Воронеж. 2008, 211 с.
- Есауленко И.Э., Кунин В.А., Ширяев О.Ю., Алексеева Д.Н. и др. Повышение качества медицинской помощи населению (монография) -Воронеж: Изд. Научная книга, 2011. -148 с
- Клемешов В.С. Информационная поддержка лечебно-диагностического процесса / В.С. Клемешов, О.В. Судаков, Н.Ю. Алексеев // В сборнике: Актуальные вопросы и перспективы развития медицины сборник научных трудов по итогам III международной научно-практической конференции. 2016. С. 87-90.
- Львович И.Я. Алгоритм работы системы интеллектуальной поддержки принятия врачебных решений на основе вероятностных моделей Байеса / Львович И.Я., Гладских Н.А., Гладышев М.В., Токарь В.А. // Системный анализ и управление в биомедицинских системах. 2010. Т. 9. №4. С. 922 -929.
- Балалаева И.Ю. Система выбора антибактериальной терапии, основанной на математических методах прогнозирования для лечения детей и подростков с пиелонефритом / Прикладные информационные аспекты медицины. 2015. Т.18. №5. С. 22-26.
- Построение информационного комплекса поддержки принятия врачебных решений в лечебно-диагностическом процессе больных сахарным диабетом в сочетании с артериальной гипертонией / О.В. Судаков, Т.Н. Петрова, Н.Ю. Алексеев, Е.А. Фурсова // Прикладные информационные аспекты медицины. 2015. Т. 18. № 6. С. 4-9.