|
Минимальные
|
Рекомендуемые
|
Процессор
|
233 MHz
|
300 MHz или
выше
|
Оперативная
память
|
128 Мб RAM
|
256 Мб RAM и выше
|
Видеоадаптер и
монитор
|
Super VGA (800
x 600)
|
Super VGA (800
x 600) или выше
|
Свободное место
на HDD
|
1.5 Гб
|
1.5 Гб или
больше
|
Устройства
взаимодействия с пользователем
|
Клавиатура и
мышь
|
Клавиатура и
мышь
|
Требования к программным
ресурсам
Для сборки и полноценной работы программы необходима
установка следующих программных зависимостей:
- Драйвер базы данных SQLITE;
- Компилятор gcc;
Утилита GNU make.
5.
Тестирование
Тестирование программного продукта проводилось на
операционной системе Windows 7 Максимальная x32.
При первом запуске программы в главном окне отображается
вкладка Пациенты, в таблице просмотра информации о пациентах отображаются
несколько записей, уже имеющихся в БД. При выделении некоторого конкретного
пациента происходит отображение записанных на него карт посещений больницы.
Кнопки управления информацией на панели инструментов не активны, что говорит о
том, что необходимо авторизироваться. При нажатии на соответствующую кнопку на
панели инструментов появляется окно авторизации пользователей. При вводе
неверного логина и пароля появляется окно, сообщающее о том, что пароль или
логи неверные, окно показано на рисунке 5.1.
Рисунок 5.1 - Сообщение о неверном логине или пароле
При вводе верного имени и пароля появляется окно, сообщающее
об успешной авторизации, становятся доступными кнопки управления информацией.
Добавление, удаление, внесение изменений и обновление данных в таблицы БД
посредством кнопок на панели инструментов происходит без сбоев. При внесении
некоторых параметров поиска и нажатии кнопки поиска на панели инструментов
данные на активной вкладке главного окна программы обновляются - отображаются
только те, которые соответствуют критериям поиска. Это отображено на рисунке
5.2.
Рисунок 5.2 - Отображение данных по запросу на поиск всех
пациентов мужского пола
При выборе карты пациента и нажатии на кнопку «Выписать
пациента» появляется диалоговое окно запроса пути к документу-отчету о лечении.
Окно показано на рисунке 5.3.
Рисунок 5.3 - окно запроса пути к файлу-отчету о результате
лечения
При выборе файла и нажатии кнопки «Открыть» в БД добавляется
запись в таблицу Выписанные пациенты. В записи содержится дата и время выписки,
идентификатор карты пациента, для которого была вызвана команда «Выписать
пациента» и путь к выбранному файлу-отчету. Запись карты теперь отображается
синим цветом (рис. 5.4).
Рисунок 5.4 - Отображение другим цветом карт выписанных
пациентов
При нажатии кнопки «Общий диагноз и результат лечения
выписанного пациента» открывается загруженный ранее файл-отчет.
При двойном щелчке левой кнопки мыши по некоторой карте
пациента отображается окно наблюдений за пациентом. Сверху в заголовке окна
прописаны ФИО пациента и дата регистрации карты. Данные в таблице
редактируются, добавляются, удаляются при нажатии на соответствующие кнопки без
сбоев.
6.
Применение
Работа с программой у пользователя не вызывает никаких
трудностей, благодаря удобному и интуитивному размещению компонентов
интерфейса. Однако, несмотря на это, порой возникают ситуации, в которых пользователь
может выполнить нежелательные действия.Для устранения подобных ситуаций в
программе предусмотрен контроль входных данных и регулируется доступность
кнопок.
Для выполнения наиболее часто используемых функций программы,
необходимые для этого компоненты размещены на панели инструментов, внешний вид
которой показан на рисунке 6.1. Каждый компонент имеет свое название
(отображается при наведении на компонент курсора мыши), по которому нетрудно
узнать его назначение.
Рисунок 6.1 - Панель инструментов программы
На главном окне программы есть четыре вкладки. Кнопки,
присутствующие на панели инструментов выполняют одни и те же действия, но для
различных вкладок, в зависимости от того, какая из них активна в данный момент.
Переход между вкладками осуществляется путем нажания на
название вкладки.
Первая вкладка предназначена для просмотра информации о всех
пациентов. Она отображается по умолчанию в главном окне при запуске программы.
Внешний вид вкладки показан на рисунке 6.2.
Рисунок 6.2 - Вкладка просмотра информации о пациентах
Данная вкладка имеет два компонента. Первый - таблица личной
информации о пациентах. Второй - таблица просмотра карт, зарегистрированных на
данного пациента. При выделении в первом элементе какой-либо записи, информация
о зарегистрированных посещениях (картах) автоматически отображается во втором
элементе. Управление данными во второй таблице первой вкладки осуществляется с
помощью кнопок, показанных на рисунке 6.3.
Рисунок 6.3 - Кнопки управления данными о поступлениях
пациента в больницу
Первый столбец кнопок отвечает за добавление, удаление,
сохранение изменений в БД, обновление данных в таблице соответственно. Во
втором столбце: верхняя кнопка - просмотр информации-отчета о результате
лечения (доступна только для выписанных пациентов), сторая кнопка - создание
отчета о ходе лечения пациента, нижняя кнопка - выписка пациента из больницы,
при ее нажатии появляется диалоговое окно, предлагающее выбрать файл-отчет,
путь к которому сохранится в БД.
Вторая вкладка предназначена для просмотра информации о
врачах. Ее внешний вид показан на рисунке 6.4.
Рисунок 6.4 - Виджет просмотра информации о врачах
Следующая вкладка - окно просмотра информации об отделениях
больницы.
Внешний вид виджета изображен на рисунке 6.5.
Рисунок 6.5 - Вкладка просмотра информации об отделениях
Последняя вкладка предназначена для отображения иформации о
палатах. Внешний вид представлен на рисунке 6.6.
Рисунок 6.6 - Внешний вид вкладки просмотра информации о
палатах
При двойном клике левой кнопкой мыши по некоторой карте
пациента отображается окно наблюдений за пациентом во время его пребывания в
больнице по данному случаю поступления. Редактирование информации
осуществляется аналогично редактированию в главном окне программы. Внешний вид
окна представлен на рисунке 6.7.
Рисунок 6.7 - Отображение наблюдений за пациентом
Поиск осуществляется на активной в данный момент вкладке
путем ввода в соответствующие поля критериев поиска и нажатия соответствующей
кнопки на панели инструментов, либо комбинации клавиш Ctrl+F. Результаты поиска
отображаются на вкладках главного окна программы. Результат поиска отображен на
рисунке 6.8.
Рисунок 6.8 - Отображение результатов поиска
Заключение
Городские больницы обслуживают порядка 100
тысяч человек. В связи с этим персоналу больницы приходится работать с огромным
количеством информации. На данный момент большинство этой информации
представлено на бумажных носителях, которые хранятся в регистратурах и архивах.
Создание, хранение, поиск, создание статистической отчетности и т.п. операции
работы с информацией было бы гораздо проще осуществлять, если бы вся информация
была прдставлена в электронном варианте.
В ходе выполнения данной курсовой работы
были достигнуты поставленные цели. Было разработано программное средство,
позволяющее автоматизировать учет пациентов больницы. ПС выполняет необходимые
операции, удобно в использовании и имеет приятный интерфейс.
Организация базы данных файлового типа (SQLITE) позволяет в дальнейшем
разработать средства экспортирования, импортирования и синхронизации
пользовательских библиотек. Это позволит организовать обмен информацией между
несколькими пользователями, что в разы увеличивает преимущество программы перед
ее конкурентами.
Разработанное ПС вдальнейшем может быть
улучшено путем реализации новых функций, например предоставление статистической
информации, разработка хорошей системы защиты информации (кодирование
информации в БД) и т.п.
Приложение А
интерфейс база
программный
Диаграмма классов
Приложение Б
ER-диаграмма
Приложение В
Текст программы
main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"
#include "connection.h"main(int argc,
char *argv[])
{a(argc,
argv);(!createConnection())1;w;.show();a.exec();
}
.h
#ifndef CONNECTION_H
#define CONNECTION_H
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>bool
createConnection(){db =
QSqlDatabase::addDatabase("QSQLITE");.setDatabaseName("QPH");(!db.open())
{::critical(0, qApp->tr("Cannot open database"),
"Unable to establish a database
connection.\n"
"This example needs SQLite support. Please
read "
"the Qt SQL driver documentation for
information how "
"to build it.\n\n"
"Click Cancel to exit.",
QMessageBox::Cancel);false;
}true;
}
#endif
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QModelIndex>
#include <QTableWidgetItem>
#include "ui_supervision.h"
#include "autorization.h"Ui
{MainWindow;
}MainWindow: public
QMainWindow{_OBJECT;:refreshKartaWidget(int
id_pac);refreshPatientWidget();refreshVrachWidget();refreshOtdelenieWidget();refreshPalataWidget();(QWidget
*parent = 0);setupDb();
~MainWindow();:::MainWindow
*ui;*autorizationWidget;slots:on_tableWidget_karta_itemDoubleClicked(QTableWidgetItem*
item);on_action_search_triggered();on_tabWidget_currentChanged(QWidget*);on_pushButton_infoVypisannogo_clicked();on_pushButton_vypisat_clicked();on_actionRefresh_activated();on_pushButton_refresh_karta_clicked();on_actionChangeUser_activated();on_actionApply_activated();on_actionDell_activated();on_actionAdd_activated();on_pushButton_del_karta_clicked();on_pushButton_add_karta_clicked();on_pushButton_ap_karta_clicked();on_tableWidget_patient_itemSelectionChanged();setControlsEnabled(bool
en);
};
#endif // MAINWINDOW_H
.cpp
#include <QSqlQuery>
#include <QtGui/QTableWidget>
#include <QtGui/QAbstractItemView>
#include <QDateTime>
#include <QDate>
#include <QAbstractItemDelegate>
#include <QComboBox>
#include <QFileDialog>
#include <QColor>
#include <QCursor>
#include <QProcess>
#include <QDialogButtonBox>
#include <QRect>
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "ui_supervision.h"
#include "supervision.h"
#include "connection.h"
#include
"itemdelegate.h"::MainWindow(QWidget *parent): QMainWindow(parent),
ui(new
Ui::MainWindow){>setupUi(this);>tableWidget_patient->setSelectionMode(QAbstractItemView::SingleSelection);>tableWidget_patient->setSelectionBehavior(QAbstractItemView::SelectRows);>tableWidget_patient->setItemDelegateForColumn(3,
new ItemDelegate());>tableWidget_karta->setSelectionMode(QAbstractItemView::SingleSelection);>tableWidget_karta->setSelectionBehavior(QAbstractItemView::SelectRows);>tableWidget_karta->setSelectionBehavior(QAbstractItemView::SelectRows);>tableWidget_karta->setItemDelegateForColumn(1,
new forVrachDelegate());>tableWidget_karta->setItemDelegateForColumn(3,
new forPalatyDelegate());>tableWidget_karta->setItemDelegateForColumn(2,
new forStatusDelegate());>tableWidget_vrach->setSelectionMode(QAbstractItemView::SingleSelection);>tableWidget_vrach->setSelectionBehavior(QAbstractItemView::SelectRows);>tableWidget_vrach->setItemDelegateForColumn(4,
new
forOtdelenieDelegate());>tableWidget_otdeleniya->setSelectionMode(QAbstractItemView::SingleSelection);>tableWidget_otdeleniya->setSelectionBehavior(QAbstractItemView::SelectRows);>tableWidget_palaty->setSelectionMode(QAbstractItemView::SingleSelection);>tableWidget_palaty->setSelectionBehavior(QAbstractItemView::SelectRows);>tabWidget->setCurrentIndex(0);>SearchLabel1->setText(QString::fromLocal8Bit("Фамилия"));>SearchLabel2->setText(QString::fromLocal8Bit("Имя"));>SearchLabel3->setText(QString::fromLocal8Bit("Отчество"));>SearchLabel4->setText(QString::fromLocal8Bit("Пол"));>SearchLabel5->setVisible(false);>SearchEdit4->setVisible(false);>SearchLabel2->setVisible(true);>SearchLabel3->setVisible(true);>SearchLabel4->setVisible(true);>SearchEdit2->setVisible(true);>SearchEdit3->setVisible(true);>SearchCBox1->setVisible(true);>pushButton_add_karta->setEnabled(false);>pushButton_del_karta->setEnabled(false);>pushButton_ap_karta->setEnabled(false);>pushButton_refresh_karta->setEnabled(false);>pushButton_vypisat->setEnabled(false);>centralWidget->setGeometry(QRect(41,0,1300,641));>tableWidget_patient->hideColumn(11);>tableWidget_vrach->hideColumn(9);>tableWidget_vrach->hideColumn(10);>tableWidget_karta->hideColumn(4);>tableWidget_otdeleniya->hideColumn(3);>tableWidget_palaty->hideColumn(2);();
}
}1:{>SearchLabel1->setText(QString::fromLocal8Bit("Фамилия"));>SearchLabel2->setText(QString::fromLocal8Bit("Имя"));>SearchLabel3->setText(QString::fromLocal8Bit("Отчество"));>SearchLabel5->setText(QString::fromLocal8Bit("Должность"));>SearchLabel4->setVisible(false);>SearchCBox1->setVisible(false);>SearchLabel2->setVisible(true);>SearchLabel3->setVisible(true);>SearchLabel5->setVisible(true);>SearchEdit2->setVisible(true);>SearchEdit3->setVisible(true);>SearchEdit4->setVisible(true);;
}2:{>SearchLabel1->setText(QString::fromLocal8Bit("Название отделения"));>SearchLabel2->setVisible(false);>SearchLabel3->setVisible(false);>SearchLabel4->setVisible(false);>SearchLabel5->setVisible(false);>SearchEdit2->setVisible(false);>SearchEdit3->setVisible(false);>SearchEdit4->setVisible(false);>SearchCBox1->setVisible(false);;
}3:{>SearchLabel1->setText(QString::fromLocal8Bit("Номер палаты"));>SearchLabel2->setVisible(false);>SearchLabel3->setVisible(false);>SearchLabel4->setVisible(false);>SearchLabel5->setVisible(false);>SearchEdit2->setVisible(false);>SearchEdit3->setVisible(false);>SearchEdit4->setVisible(false);>SearchCBox1->setVisible(false);;
}:;
}
}::~MainWindow(){ui;
}MainWindow::setControlsEnabled(bool
en){>actionAdd->setEnabled(en);>actionDell->setEnabled(en);>actionApply->setEnabled(en);>actionRefresh->setEnabled(en);
}
//void MainWindow::setIdUsersVrach (int id){
// idUsersVrach = id;
//}
//обновить таблицу пациентовMainWindow::refreshPatientWidget(){(int
i = ui->tableWidget_patient->rowCount()-1; i >=0;
i--){>tableWidget_patient->removeRow(i);
}query;sqlToBild = "SELECT DISTINCT
familiya,imya,otchestvo,pol,data_rojd,gorod,adres,telefon,email,data_dobavleniya,zametki,id_pacienta
FROM pacient WHERE id_pacienta!= 0 ";.append (ui->SearchEdit1->text().isEmpty()?
"": QString("AND familiya LIKE '%%1%'
").arg(ui->SearchEdit1->text()));.append
(ui->SearchEdit2->text().isEmpty()? "": QString("AND imya
LIKE '%%1%' ").arg(ui->SearchEdit2->text()));.append
(ui->SearchEdit3->text().isEmpty()? "": QString("AND
otchestvo LIKE '%%1%' ").arg(ui->SearchEdit3->text()));.append
(ui->SearchCBox1->currentText().isNull()? "": QString("AND
pol LIKE '%%1%' ").arg(ui->SearchCBox1->currentText()));QString sql
= sqlToBild;.exec(sql);(query.next()){rows = ui->tableWidget_patient->rowCount();>tableWidget_patient->insertRow(rows);>tableWidget_patient->setItem(rows,
0, new
QTableWidgetItem(query.value(0).toString()));>tableWidget_patient->setItem(rows,
1, new QTableWidgetItem(query.value(1).toString()));>tableWidget_patient->setItem(rows,
2, new
QTableWidgetItem(query.value(2).toString()));>tableWidget_patient->setItem(rows,
3, new
QTableWidgetItem(query.value(3).toString()));>tableWidget_patient->setItem(rows,
4, new QTableWidgetItem(query.value(4).toString()));>tableWidget_patient->setItem(rows,
5, new
QTableWidgetItem(query.value(5).toString()));>tableWidget_patient->setItem(rows,
6, new
QTableWidgetItem(query.value(6).toString()));>tableWidget_patient->setItem(rows,
7, new QTableWidgetItem(query.value(7).toString()));>tableWidget_patient->setItem(rows,
8, new
QTableWidgetItem(query.value(8).toString()));>tableWidget_patient->setItem(rows,
9, new
QTableWidgetItem(query.value(9).toString()));>tableWidget_patient->setItem(rows,
10, new QTableWidgetItem(query.value(10).toString()));>tableWidget_patient->setItem(rows,
11, new QTableWidgetItem(query.value(11).toString()));
}
}
////обновить таблицу врачейMainWindow::refreshVrachWidget(){(int
i = ui->tableWidget_vrach->rowCount()-1; i >=0;
i--){>tableWidget_vrach->removeRow(i);
}query;sqlToBild = "SELECT DISTINCT
familiya, imya, otchestvo, doljnost, id_otdeleniya, kabinet, telefon, email,
login, parol, id_vracha FROM vrach WHERE id_vracha!=0 ";.append
(ui->SearchEdit1->text().isEmpty()? "": QString("AND
familiya LIKE '%%1%' ").arg(ui->SearchEdit1->text()));.append
(ui->SearchEdit2->text().isEmpty()? "": QString("AND imya
LIKE '%%1%' ").arg(ui->SearchEdit2->text()));.append
(ui->SearchEdit3->text().isEmpty()? "": QString("AND
otchestvo LIKE '%%1%' ").arg(ui->SearchEdit3->text()));.append
(ui->SearchEdit4->text().isEmpty()? "": QString("AND
doljnost LIKE '%%1%' ").arg(ui->SearchEdit4->text()));QString sql =
sqlToBild;.exec(sql);(query.next()){rows =
ui->tableWidget_vrach->rowCount();>tableWidget_vrach->insertRow(rows);>tableWidget_vrach->setItem(rows,
0, new
QTableWidgetItem(query.value(0).toString()));>tableWidget_vrach->setItem(rows,
1, new
QTableWidgetItem(query.value(1).toString()));>tableWidget_vrach->setItem(rows,
2, new QTableWidgetItem(query.value(2).toString()));>tableWidget_vrach->setItem(rows,
3, new QTableWidgetItem(query.value(3).toString()));sql;.prepare("SELECT
DISTINCT name FROM otdelenie WHERE id_otdeleniya
==:id_otd");.bindValue(0,query.value(4).toInt());.exec();(sql.next())>tableWidget_vrach->setItem(rows,
4, new
QTableWidgetItem(sql.value(0).toString()));>tableWidget_vrach->setItem(rows,
5, new
QTableWidgetItem(query.value(5).toString()));>tableWidget_vrach->setItem(rows,
6, new QTableWidgetItem(query.value(6).toString()));>tableWidget_vrach->setItem(rows,
7, new
QTableWidgetItem(query.value(7).toString()));>tableWidget_vrach->setItem(rows,
8, new
QTableWidgetItem(query.value(8).toString()));>tableWidget_vrach->setItem(rows,
9, new QTableWidgetItem(query.value(9).toString()));>tableWidget_vrach->setItem(rows,
10, new QTableWidgetItem(query.value(10).toString()));
}
}
////обновить таблицу отделенийMainWindow::refreshOtdelenieWidget(){(int
i = ui->tableWidget_otdeleniya->rowCount()-1; i >=0;
i--){>tableWidget_otdeleniya->removeRow(i);
}query;sqlToBild = "SELECT DISTINCT name,
telefon, email, id_otdeleniya FROM otdelenie WHERE id_otdeleniya!=0
";.append (ui->SearchEdit1->text().isEmpty()? "":
QString("AND name LIKE '%%1%'
").arg(ui->SearchEdit1->text()));QString sql = sqlToBild;.exec(sql);(query.next()){rows
= ui->tableWidget_otdeleniya->rowCount();>tableWidget_otdeleniya->insertRow(rows);>tableWidget_otdeleniya->setItem(rows,0,
new
QTableWidgetItem(query.value(0).toString()));>tableWidget_otdeleniya->setItem(rows,1,
new QTableWidgetItem(query.value(1).toString()));>tableWidget_otdeleniya->setItem(rows,2,
new
QTableWidgetItem(query.value(2).toString()));>tableWidget_otdeleniya->setItem(rows,3,
new QTableWidgetItem(query.value(3).toString()));
}
}
////обновить таблицу палатMainWindow::refreshPalataWidget(){(int
i = ui->tableWidget_palaty->rowCount()-1; i >=0;
i--){>tableWidget_palaty->removeRow(i);
}query;sqlToBild = "SELECT DISTINCT
no_palaty, kol_mest, id_palaty FROM palata WHERE id_palaty!=0
";.append(ui->SearchEdit1->text().isEmpty()? "":
QString("AND no_palaty LIKE '%%1%'
").arg(ui->SearchEdit1->text()));QString sql =
sqlToBild;.exec(sql);(query.next()){rows =
ui->tableWidget_palaty->rowCount();>tableWidget_palaty->insertRow(rows);>tableWidget_palaty->setItem(rows,
0, new QTableWidgetItem(query.value(0).toString()));>tableWidget_palaty->setItem(rows,
1, new
QTableWidgetItem(query.value(1).toString()));>tableWidget_palaty->setItem(rows,
2, new QTableWidgetItem(query.value(2).toString()));
}
}MainWindow::setupDb(){();();();();
}
// обновить карты пациентовMainWindow::refreshKartaWidget(int
id_pac){(int i = ui->tableWidget_karta->rowCount(); i >=0;
i--){>tableWidget_karta->removeRow(i);
}query;.prepare("SELECT DISTINCT data_sozd,
id_vracha, status, id_palaty, id_karty FROM karta WHERE id_pacienta
=:pid");.bindValue(0, id_pac);.exec();(query.next()){rows =
ui->tableWidget_karta->rowCount();>tableWidget_karta->insertRow(rows);>tableWidget_karta->setItem(rows,
0, new QTableWidgetItem(query.value(0).toString()));sql;.prepare("SELECT
DISTINCT familiya FROM vrach WHERE id_vracha ==:id_v");.bindValue(0,query.value(1).toInt());.exec();(sql.next())>tableWidget_karta->setItem(rows,
1, new
QTableWidgetItem(sql.value(0).toString()));>tableWidget_karta->setItem(rows,
2, new QTableWidgetItem(query.value(2).toString()));.prepare("SELECT DISTINCT
no_palaty FROM palata WHERE id_palaty
==:id_p");.bindValue(0,query.value(3).toInt());.exec();(sql.next())>tableWidget_karta->setItem(rows,
3, new
QTableWidgetItem(sql.value(0).toString()));>tableWidget_karta->setItem(rows,
4, new QTableWidgetItem(query.value(4).toString()));
}.exec("SELECT id_karty FROM
vypisannye_pacienty");(query.next()){(int i = 0; i <
ui->tableWidget_karta->rowCount(); i++){id_karty =
ui->tableWidget_karta->item(i, 4)->text();(query.value(0).toString()
== id_karty){>tableWidget_karta->item(i,0)->setBackgroundColor(Qt::darkCyan);>tableWidget_karta->item(i,1)->setBackgroundColor(Qt::darkCyan);>tableWidget_karta->item(i,2)->setBackgroundColor(Qt::darkCyan);>tableWidget_karta->item(i,3)->setBackgroundColor(Qt::darkCyan);
}
}
}
}
//отображение карт пациентовMainWindow::on_tableWidget_patient_itemSelectionChanged(){(!ui->tableWidget_patient->selectionModel()->selectedIndexes().isEmpty()){row
=
ui->tableWidget_patient->selectionModel()->selectedIndexes()[0].row();patient_id
=
ui->tableWidget_patient->item(row,11)->text().toInt();(patient_id);(ui->actionAdd->isEnabled()){>pushButton_add_karta->setEnabled(true);>pushButton_del_karta->setEnabled(true);>pushButton_ap_karta->setEnabled(true);>pushButton_refresh_karta->setEnabled(true);>pushButton_vypisat->setEnabled(true);
}
}
}
//сохранить изменения в таблице карт пациентов
void
MainWindow::on_pushButton_ap_karta_clicked(){row =
ui->tableWidget_patient->selectionModel()->selectedIndexes()[0].row();id_pac
= ui->tableWidget_patient->item(row,11)->text().toInt();query;.prepare("DELETE
FROM karta WHERE id_pacienta =:id_p");.bindValue(0,id_pac);.exec();(int i
= 0; i < ui->tableWidget_karta->rowCount(); i++){data_sozd =
ui->tableWidget_karta->item(i,0)->text();id_vrach;famVracha =
ui->tableWidget_karta->item(i,1)->text();.prepare("SELECT
DISTINCT id_vracha FROM vrach WHERE familiya ==:fam");.bindValue(0,
famVracha);.exec();(query.next())_vrach = query.value(0).toInt();status =
ui->tableWidget_karta->item(i,2)->text();no_palaty = ui->tableWidget_karta->item(i,3)->text();id_palaty;.prepare("SELECT
DISTINCT id_palaty FROM palata WHERE no_palaty ==:no_p
");.bindValue(0,no_palaty);.exec();(query.next())_palaty =
query.value(0).toInt();id_karty = ui->tableWidget_karta->item(i,4)->text();.prepare("INSERT
INTO karta (id_karty, data_sozd, id_vracha, id_pacienta, id_palaty,
status)"
"VALUES
(:id_k,:d_sozd,:id_v,:id_pac,:id_pal,:st)");.bindValue(0,id_karty);.bindValue(1,data_sozd);.bindValue(2,id_vrach);.bindValue(3,id_pac);.bindValue(4,id_palaty);.bindValue(5,status);.exec();
}(id_pac);
}
//добавление пустой записи в таблицу карт пациента
void
MainWindow::on_pushButton_add_karta_clicked(){rows =
ui->tableWidget_karta->rowCount();>tableWidget_karta->insertRow(rows);(int
i = 0; i < ui->tableWidget_karta->columnCount();
i++)>tableWidget_karta->setItem(rows, i, new QTableWidgetItem());date =
QDate().currentDate();>tableWidget_karta->item(rows,
0)->setText(date.toString("dd.MM.yyyy"));query;.prepare("SELECT
familiya FROM vrach WHERE id_vracha =:id_v");
// query.bindValue(0,idUsersVrach);.exec();(query.next())>tableWidget_karta->item(rows,
1)->setText(query.value(0).toString());
}
////удаление записи из таблицы карт пациента
void
MainWindow::on_pushButton_del_karta_clicked(){(!ui->tableWidget_karta->selectionModel()->selectedIndexes().isEmpty()){rows
=
ui->tableWidget_karta->selectionModel()->selectedIndexes()[0].row();id_karty
= ui->tableWidget_karta->item(rows,
4)->text().toInt();query;.prepare("DELETE FROM karta WHERE id_karty =:id_k");.bindValue("id_k",
id_karty);.exec();>tableWidget_karta->removeRow(rows);
}
}
//добавить строку на главном окнеMainWindow::on_actionAdd_activated(){indexPage
= ui->tabWidget->currentIndex();(indexPage){0:{rows =
ui->tableWidget_patient->rowCount();>tableWidget_patient->insertRow(rows);(int
i = 0; i < ui->tableWidget_patient->columnCount();
i++)>tableWidget_patient->setItem(rows, i, new QTableWidgetItem());date =
QDate().currentDate();>tableWidget_patient->item(rows,
9)->setText(date.toString("dd.MM.yyyy"));;
}1:{rows = ui->tableWidget_vrach->rowCount();>tableWidget_vrach->insertRow(rows);(int
i = 0; i < ui->tableWidget_vrach->columnCount();
i++)>tableWidget_vrach->setItem(rows, i, new QTableWidgetItem());;
}2:{rows =
ui->tableWidget_otdeleniya->rowCount();>tableWidget_otdeleniya->insertRow(rows);(int
i = 0; i < ui->tableWidget_otdeleniya->columnCount();
i++)>tableWidget_otdeleniya->setItem(rows, i, new QTableWidgetItem());;
}3:{rows =
ui->tableWidget_palaty->rowCount();>tableWidget_palaty->insertRow(rows);(int
i = 0; i < ui->tableWidget_palaty->columnCount();
i++)>tableWidget_palaty->setItem(rows, i, new QTableWidgetItem());
break;
}:;
}
}
//удаление записи в главном окне
void
MainWindow::on_actionDell_activated(){indexPage =
ui->tabWidget->currentIndex();query;(indexPage){0:{(!ui->tableWidget_patient->selectionModel()->selectedIndexes().isEmpty()){rows
=
ui->tableWidget_patient->selectionModel()->selectedIndexes()[0].row();id_pacienta
= ui->tableWidget_patient->item(rows, 11)->text().toInt();.prepare("DELETE
FROM pacient WHERE id_pacienta =:id_pac");.bindValue("id_pac",
id_pacienta);.exec();.prepare("DELETE FROM nabludenie WHERE id_karty IN
(SELECT id_karty FROM karta WHERE id_pacienta =:id_pac)");//удаление наблюдений за удаляемым пациентом.bindValue(0,id_pacienta);.exec();.prepare("DELETE
FROM karta WHERE id_pacienta =:id_pac");//удалить в картах записи на удаляемого пациента.bindValue("id_pac",
id_pacienta);.exec();>tableWidget_patient->removeRow(rows);;
}
}1:{(!ui->tableWidget_vrach->selectionModel()->selectedIndexes().isEmpty()){rows
=
ui->tableWidget_vrach->selectionModel()->selectedIndexes()[0].row();id_vracha
= ui->tableWidget_vrach->item(rows,
10)->text().toInt();.prepare("DELETE FROM vrach WHERE id_vracha
=:id_v");.bindValue("id_v", id_vracha);.exec();>tableWidget_vrach->removeRow(rows);;
}
}2:{(!ui->tableWidget_otdeleniya->selectionModel()->selectedIndexes().isEmpty()){rows
=
ui->tableWidget_otdeleniya->selectionModel()->selectedIndexes()[0].row();id_otdeleniya
= ui->tableWidget_otdeleniya->item(rows,
3)->text().toInt();.prepare("DELETE FROM otdelenie WHERE id_otdeleniya
=:id_otd");.bindValue("id_otd",
id_otdeleniya);.exec();>tableWidget_otdeleniya->removeRow(rows);;
}
}3:{(!ui->tableWidget_palaty->selectionModel()->selectedIndexes().isEmpty()){rows
=
ui->tableWidget_palaty->selectionModel()->selectedIndexes()[0].row();id_palaty
= ui->tableWidget_palaty->item(rows, 2)->text();.prepare("DELETE
FROM palata WHERE id_palaty =:id_pal");.bindValue("id_pal",
id_palaty);.exec();>tableWidget_palaty->removeRow(rows);
break;
}
}:;
}
}
//сохранить изменения в таблице главного окна
void
MainWindow::on_actionApply_activated(){indexPage =
ui->tabWidget->currentIndex();query;(indexPage){0:{(int i=0;
i<ui->tableWidget_patient->rowCount(); i++){id_pac =
ui->tableWidget_patient->item(i,11)->text().toInt();.prepare("DELETE
FROM pacient WHEHE id_pacienta =:id_p");.bindValue(0, id_pac);.exec();
}(int i = 0; i <
ui->tableWidget_patient->rowCount(); i++){fam =
ui->tableWidget_patient->item(i, 0)->text();imya =
ui->tableWidget_patient->item(i, 1)->text();otch =
ui->tableWidget_patient->item(i, 2)->text();pol =
ui->tableWidget_patient->item(i, 3)->text();data_rojd =
ui->tableWidget_patient->item(i, 4)->text();gorod =
ui->tableWidget_patient->item(i, 5)->text();adres = ui->tableWidget_patient->item(i,
6)->text();telefon = ui->tableWidget_patient->item(i,
7)->text();email = ui->tableWidget_patient->item(i,
8)->text();data_dobav = ui->tableWidget_patient->item(i,
9)->text();zametki = ui->tableWidget_patient->item(i,
10)->text();id_pac = ui->tableWidget_patient->item(i,
11)->text();.prepare("INSERT INTO pacient(familiya, imya, otchestvo,
pol, data_rojd, gorod, adres, telefon, email, data_dobavleniya, zametki,
id_pacienta) VALUES (:fam,:im,:otch,:pol,:d_r,:gorod,:adres,:tel,:email,:d_dob,:zam,:id_pac)");.bindValue(0,fam);.bindValue(1,
imya);.bindValue(2, otch);.bindValue(3, pol);.bindValue(4,
data_rojd);.bindValue(5, gorod);.bindValue(6, adres);.bindValue(7,
telefon);.bindValue(8, email);.bindValue(9, data_dobav);.bindValue(10, zametki);.bindValue(11,
id_pac);.exec();
}();;
}1:{(int i = 0;
i<ui->tableWidget_vrach->rowCount(); i++){id_vracha =
ui->tableWidget_vrach->item(i,
10)->text().toInt();.prepare("DELETE FROM vrach WHERE id_vracha
=:id_v");.bindValue(0,id_vracha);.exec();
}(int i = 0; i <
ui->tableWidget_vrach->rowCount(); i++){fam =
ui->tableWidget_vrach->item(i, 0)->text();imya =
ui->tableWidget_vrach->item(i, 1)->text();otch =
ui->tableWidget_vrach->item(i, 2)->text();dolj = ui->tableWidget_vrach->item(i,
3)->text();id_otdel;.prepare("SELECT DISTINCT id_otdeleniya FROM
otdelenie WHERE name ==:name");.bindValue(0,
ui->tableWidget_vrach->item(i,
4)->text());.exec();(query.next())_otdel = query.value(0).toInt();kab =
ui->tableWidget_vrach->item(i, 5)->text();tel =
ui->tableWidget_vrach->item(i, 6)->text();email =
ui->tableWidget_vrach->item(i, 7)->text();login =
ui->tableWidget_vrach->item(i, 8)->text();pas =
ui->tableWidget_vrach->item(i, 9)->text();id_vracha =
ui->tableWidget_vrach->item(i, 10)->text();.prepare("INSERT INTO
vrach(familiya, imya, otchestvo, doljnost, id_otdeleniya, kabinet, telefon,
email, login, parol, id_vracha) VALUES
(:fam,:im,:otch,:dolj,:id_otd,:kab,:tel,:email,:log,:pas,:id_v)");.bindValue(":fam",fam);.bindValue("im",
imya);.bindValue(":otch", otch);.bindValue(":dolj",
dolj);.bindValue(":id_otdel", id_otdel);.bindValue(":kab",
kab);.bindValue(":tel", tel);.bindValue(":email",
email);.bindValue(":log", login);.bindValue(":pas",
pas);.bindValue(":id_v", id_vracha);.exec();
}();;
}2:{(int i = 0; i <
ui->tableWidget_otdeleniya->rowCount(); i++){id_otdeleniya =
ui->tableWidget_otdeleniya->item(i,3)->text().toInt();.prepare("DELETE
FROM otdelenie WHERE id_otdeleniya =:id_otd");.bindValue(0,
id_otdeleniya);.exec();
}(int i = 0; i < ui->tableWidget_otdeleniya->rowCount();
i++){nazv = ui->tableWidget_otdeleniya->item(i,0)->text();tel =
ui->tableWidget_otdeleniya->item(i,1)->text();email =
ui->tableWidget_otdeleniya->item(i,2)->text();id_otdel =
ui->tableWidget_otdeleniya->item(i,3)->text();.prepare("INSERT
INTO otdelenie (id_otdeleniya, name, telefon, email) VALUES
(:id_otd,:name,:tel,:email)");.bindValue(0,id_otdel);.bindValue(1,
nazv);.bindValue(2, tel);.bindValue(3,email);.exec();
}();;
}3:{(int i = 0; i <
ui->tableWidget_palaty->rowCount(); i++){id_palaty =
ui->tableWidget_palaty->item(i,2)->text().toInt();.prepare("DELETE
FROM palata WHERE id_palaty =:id_p");.bindValue(0, id_palaty);.exec();
}(int i = 0; i<
ui->tableWidget_palaty->rowCount(); i++){no_pal =
ui->tableWidget_palaty->item(i,0)->text();kol_mest =
ui->tableWidget_palaty->item(i,1)->text();id_pal =
ui->tableWidget_palaty->item(i,2)->text();.prepare("INSERT INTO
palata (no_palaty, kol_mest, id_palaty) VALUES
(:no_p,:kol_m,:id_p)");.bindValue(0,no_pal);.bindValue(1,kol_mest);.bindValue(2,id_pal);.exec();
}();;
}:;
}
}
//обновить содержимое таблицы карт пациентаMainWindow::on_pushButton_refresh_karta_clicked(){row
=
ui->tableWidget_patient->selectionModel()->selectedIndexes()[0].row();patient_id
= ui->tableWidget_patient->item(row,11)->text().toInt();(patient_id);
}
//смена пользователяMainWindow::on_actionChangeUser_activated(){= new
autorization();(autorizationWidget, SIGNAL(authorization_successfull(bool)),
this, SLOT(setControlsEnabled(bool)));
autorizationWidget->show();
}
//обновить данные в таблицах главного окна программы
void MainWindow::on_actionRefresh_activated()
{indexPage =
ui->tabWidget->currentIndex();(indexPage){0: {();;
}1: {();;
}2: {();;
}3: {();;
}:;
}
}
// выписать пациентаMainWindow::on_pushButton_vypisat_clicked()
{row =
ui->tableWidget_karta->selectionModel()->selectedIndexes()[0].row();id_karty
= ui->tableWidget_karta->item(row, 4)->text().toInt();path =
QFileDialog::getOpenFileName(this, QString::fromLocal8Bit("Отчет о результатах лечения выписываемого пациента"),
"C:\\");dateNow =
QDate().currentDate().toString("dd.MM.yyyy");timeNow =
QTime().currentTime().toString("HH:mm");query;.prepare("INSERT
INTO vypisannye_pacienty (id_karty, data, vremya, otchet)"
"VALUES (:id_k,:date,:time,:otchet)");.bindValue(0,
id_karty);.bindValue(1,dateNow);.bindValue(2,timeNow);.bindValue(3,path);
query.exec();
}
//открыть файл-отчет для данного выписанного пациента
void
MainWindow::on_pushButton_infoVypisannogo_clicked()
{row = ui->tableWidget_karta->selectionModel()->selectedIndexes()[0].row();id_karty
= ui->tableWidget_karta->item(row,
4)->text();query;.prepare("SELECT otchet FROM vypisannye_pacienty WHERE
id_karty =:id_k");.bindValue(0, id_karty);.exec();(query.next()){filePath
= query.value(0).toString();::execute("winword "+filePath);
}
}MainWindow::on_action_search_triggered(){indexPage
= ui->tabWidget->currentIndex();(indexPage){0: {();;
}1: {();;
}2: {();;
}3: {();;
}:;
}
}
//отображение наблюденийMainWindow::on_tableWidget_karta_itemDoubleClicked(QTableWidgetItem*
item)
{row =
ui->tableWidget_karta->selectionModel()->selectedIndexes()[0].row();id_k
= ui->tableWidget_karta->item(row,4)->text().toInt();(id_k!=
0){*supervision = new Supervision();>id_karty =
id_k;query;.prepare("SELECT data,vremya,lekarstvo,dozirovka,procedura,analiz,rezultat,id_nabludeniya,
id_karty FROM nabludenie WHERE id_karty =:id_k
");.bindValue(0,id_k);.exec();(query.next()){rows =
supervision->ui->tableWidget->rowCount();>ui->tableWidget->insertRow(rows);>ui->tableWidget->setItem(rows,
0, new
QTableWidgetItem(query.value(0).toString()));>ui->tableWidget->setItem(rows,
1, new
QTableWidgetItem(query.value(1).toString()));>ui->tableWidget->setItem(rows,
2, new QTableWidgetItem(query.value(2).toString()));>ui->tableWidget->setItem(rows,
3, new
QTableWidgetItem(query.value(3).toString()));>ui->tableWidget->setItem(rows,
4, new
QTableWidgetItem(query.value(4).toString()));>ui->tableWidget->setItem(rows,
5, new QTableWidgetItem(query.value(5).toString()));>ui->tableWidget->setItem(rows,
6, new QTableWidgetItem(query.value(6).toString()));>ui->tableWidget->setItem(rows,
7, new
QTableWidgetItem(query.value(7).toString()));>ui->tableWidget->setItem(rows,
8, new QTableWidgetItem(query.value(8).toString()));
}
// прописывает заголовок окна наблюденийdate_karty;
query.prepare ("SELECT data_sozd FROM karta
WHERE id_karty =:id_k");.bindValue(0, id_k);.exec();(query.next())_karty =
query.value(0).toString();.prepare("SELECT familiya, imya, otchestvo FROM
pacient WHERE id_pacienta ="
"(SELECT id_pacienta FROM karta WHERE
id_karty =:id_k)");.bindValue(0, id_k);.exec();(query.next()){
// const QString title =
query.value(0).toString()+" "+ query.value(1).toString()+"
"+query.value(2).toString()+", "+
date_karty;>setWindowTitle(query.value(0).toString()+" "+ query.value(1).toString()+"
"+query.value(2).toString()+", "+ date_karty);
}(ui->pushButton_add_karta->isEnabled()){>ui->buttonAdd->setEnabled(true);>ui->buttonDelete->setEnabled(true);>ui->buttonApply->setEnabled(true);>ui->buttonRefresh->setEnabled(true);
}>show();
}
}
.h
#ifndef SUPERVISION_H
#define SUPERVISION_H
#include <QWidget>Ui {Supervision;
}Supervision: public QWidget
{_OBJECT:(QWidget *parent = 0);::Supervision
*ui;id_karty;refresh();
~Supervision();:
// Ui::Supervision *ui;slots:on_buttonRefresh_clicked();on_buttonApply_clicked();on_buttonDelete_clicked();on_buttonAdd_clicked();:
};
#endif // SUPERVISION_H
.cpp
#include <QTableWidget>
#include <QDate>
#include <QTime>
#include <QFileDialog>
#include "supervision.h"
#include "ui_supervision.h"
#include
<connection.h>::Supervision(QWidget *parent): QWidget(parent),ui(new
Ui::Supervision){>setupUi(this);>tableWidget->setSelectionMode(QAbstractItemView::MultiSelection);>tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);>tableWidget->hideColumn(7);>tableWidget->hideColumn(8);
}::~Supervision(){ui;
}Supervision::refresh(){(int i =
ui->tableWidget->rowCount()-1; i >= 0;
i--){>tableWidget->removeRow(i);
}query;.prepare("SELECT data, vremya,
lekarstvo, dozirovka, procedura, analiz, rezultat, id_nabludeniya, id_karty
FROM nabludenie WHERE id_karty ==:id_k ");.bindValue(0,
id_karty);.exec();(query.next()){rows =
ui->tableWidget->rowCount();>tableWidget->insertRow(rows);>tableWidget->setItem(rows,
0, new QTableWidgetItem(query.value(0).toString()));>tableWidget->setItem(rows,
1, new
QTableWidgetItem(query.value(1).toString()));>tableWidget->setItem(rows,
2, new
QTableWidgetItem(query.value(2).toString()));>tableWidget->setItem(rows,
3, new QTableWidgetItem(query.value(3).toString()));>tableWidget->setItem(rows,
4, new
QTableWidgetItem(query.value(4).toString()));>tableWidget->setItem(rows,
5, new
QTableWidgetItem(query.value(5).toString()));>tableWidget->setItem(rows,
6, new QTableWidgetItem(query.value(6).toString()));>tableWidget->setItem(rows,
7, new
QTableWidgetItem(query.value(7).toString()));>tableWidget->setItem(rows,
8, new QTableWidgetItem(query.value(8).toString()));
}
}
//добавить строкуSupervision::on_buttonAdd_clicked()
{rows =
ui->tableWidget->rowCount();>tableWidget->insertRow(rows);(int i =
0; i < ui->tableWidget->columnCount();
i++)>tableWidget->setItem(rows, i, new QTableWidgetItem());date =
QDate().currentDate();>tableWidget->item(rows,
0)->setText(date.toString("dd.MM.yyyy"));time =
QTime().currentTime();>tableWidget->item(rows,1)->setText(time.toString("HH.mm"));
}
//удалить строкуSupervision::on_buttonDelete_clicked()
{(!ui->tableWidget->selectionModel()->selectedIndexes().isEmpty()){rows
= ui->tableWidget->rowCount();(int i = rows - 1; i >= 0; i--){(ui->tableWidget->item(i,
0)->isSelected()){id_sv = ui->tableWidget->item(i,
7)->text().toInt();query;.prepare("DELETE FROM nabludenie WHERE
id_nabludeniya =:id_sv");.bindValue("id_sv",
id_sv);.exec();>tableWidget->removeRow(i);
}
}
}
}
//сохранить измененияSupervision::on_buttonApply_clicked()
{query;.prepare("DELETE FROM nabludenie
WHERE id_karty =:id");.bindValue(0,id_karty);.exec();rows =
ui->tableWidget->rowCount();(int i = 0; i < rows; i++){date =
ui->tableWidget->item(i,0)->text();time = ui->tableWidget->item(i,1)->text();lek
= ui->tableWidget->item(i,2)->text();doz =
ui->tableWidget->item(i,3)->text();proc =
ui->tableWidget->item(i,4)->text();analiz =
ui->tableWidget->item(i,5)->text();result = ui->tableWidget->item(i,6)->text();id_sv
= ui->tableWidget->item(i,7)->text();.prepare("INSERT INTO
nabludenie (id_karty, data, vremya, lekarstvo, dozirovka, procedura, analiz,
rezultat, id_nabludeniya) VALUES
(:id_k,:date,:time,:lek,:doz,:proc,:an,:res,:id_sv)");.bindValue(0,id_karty);.bindValue(1,date);.bindValue(2,time);.bindValue(3,lek);.bindValue(4,doz);.bindValue(5,proc);.bindValue(6,analiz);.bindValue(7,result);.bindValue(8,id_sv);.exec();
}();
}
//void Supervision::putPath(){
// QString = QFileDialog::getOpenFileName(this,
QString::fromLocal8Bit("Прикрепить документ к наблюдению"),
"C:\\");
// ui->tableWidget->item()
//}Supervision::on_buttonRefresh_clicked()
{();
}
.h
#ifndef AUTORIZATION_H
#define AUTORIZATION_H
#include <QWidget>
//#include "mainwindow.h"
//#include "connection.h"Ui
{autorization;
}autorization: public QWidget {_OBJECT:(QWidget
*parent = 0);::autorization *ui;
~autorization();:authorization_successfull(bool);:
// Ui::autorization
*ui;slots:on_pushButton_Out_clicked();on_pushButton_Enter_clicked();
};
#endif // AUTORIZATION_H
.cpp
#include <QSqlQuery>
#include <QMessageBox>
#include "autorization.h"
#include
"ui_autorization.h"::autorization(QWidget *parent): QWidget(parent),
ui(new Ui::autorization){>setupUi(this);
}::~autorization()
{ui;
}autorization::on_pushButton_Enter_clicked(){login
= ui->lineEdit_Login->text();password =
ui->lineEdit_Password->text();query;.prepare("SELECT id_vracha FROM
vrach WHERE login =:log AND parol
=:pasw");.bindValue(0,login);.bindValue(1,password);.exec();(query.next()){::information(this,"",QString::fromLocal8Bit("Здравствуйте,
")+login+"!");authorization_successfull(true);();
}QMessageBox::information(this,"",QString::fromLocal8Bit("Неверное имя пользователя или пароль."));
}autorization::on_pushButton_Out_clicked(){();
}
.h
#ifndef ITEMDELEGATE_H
#define ITEMDELEGATE_H
#include <QItemDelegate>ItemDelegate:
public QItemDelegate{_OBJECT:(QObject *parent = 0);*createEditor(QWidget
*parent, const QStyleOptionViewItem &option, const QModelIndex &index)
const;void setEditorData(QWidget *editor, const QModelIndex &index)
const;setModelData(QWidget *editor, QAbstractItemModel *model, const
QModelIndex &index) const;updateEditorGeometry(QWidget *editor, const
QStyleOptionViewItem &option, const QModelIndex &index) const;:slots:
};forOtdelenieDelegate: public ItemDelegate{_OBJECT:void
setEditorData(QWidget *editor, const QModelIndex &index) const;:slots:
};forVrachDelegate: public
ItemDelegate{_OBJECT:void setEditorData(QWidget *editor, const QModelIndex
&index) const;:slots:
};forPalatyDelegate: public ItemDelegate{_OBJECT:void
setEditorData(QWidget *editor, const QModelIndex &index) const;:slots:
};forStatusDelegate: public
ItemDelegate{_OBJECT:void setEditorData(QWidget *editor, const QModelIndex
&index) const;:slots:
};
#endif // ITEMDELEGATE_H
.cpp
#include <QComboBox>
#include <QSqlQuery>
#include
"itemdelegate.h"::ItemDelegate(QObject *parent):
QItemDelegate(parent){}* ItemDelegate::createEditor(QWidget *parent, const
QStyleOptionViewItem &option, const QModelIndex &index) const{*editor =
new QComboBox(parent);>setEditable(true);editor;
}ItemDelegate::setModelData(QWidget *editor,
QAbstractItemModel *model, const QModelIndex &index) const{*comboBox =
static_cast<QComboBox*>(editor);>setData(index,
comboBox->itemText(comboBox->currentIndex()));
}ItemDelegate::setEditorData(QWidget *editor,
const QModelIndex &index) const{*comboBox =
static_cast<QComboBox*>(editor);>addItem(QString::fromLocal8Bit("муж"));>addItem(QString::fromLocal8Bit("жен"));
}ItemDelegate::updateEditorGeometry(QWidget
*editor, const QStyleOptionViewItem &option, const QModelIndex
&/*index*/) const{>setGeometry(option.rect);
}forOtdelenieDelegate::setEditorData(QWidget
*editor, const QModelIndex &index) const{*comboBox =
static_cast<QComboBox*>(editor);query;.exec("SELECT DISTINCT name
FROM otdelenie WHERE id_otdeleniya!=0
");(query.next()){>addItem(query.value(0).toString());
}
}forVrachDelegate::setEditorData(QWidget *editor,
const QModelIndex &index) const{*comboBox =
static_cast<QComboBox*>(editor);query;.exec("SELECT DISTINCT familiya
FROM vrach WHERE id_vracha!= 0
");(query.next()){>addItem(query.value(0).toString());
}
}forPalatyDelegate::setEditorData(QWidget
*editor, const QModelIndex &index) const{*comboBox =
static_cast<QComboBox*>(editor);query;.exec("SELECT DISTINCT no_palaty
FROM palata WHERE id_palaty!= 0
");(query.next()){>addItem(query.value(0).toString());
}
}forStatusDelegate::setEditorData(QWidget
*editor, const QModelIndex &index) const{*comboBox =
static_cast<QComboBox*>(editor);>addItem(QString::fromLocal8Bit("амбулаторно"));>addItem(QString::fromLocal8Bit("стационарно"));
}