Автоматизация учета пациентов больницы

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

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

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

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

const QString sql = sqlToBild;

query.exec(sql);

while (query.next()){

int rows = ui->tableWidget_palaty->rowCount();

ui->tableWidget_palaty->insertRow(rows);

ui->tableWidget_palaty->setItem(rows, 0, new QTableWidgetItem(query.value(0).toString()));

ui->tableWidget_palaty->setItem(rows, 1, new QTableWidgetItem(query.value(1).toString()));

ui->tableWidget_palaty->setItem(rows, 2, new QTableWidgetItem(query.value(2).toString()));

}

}

void MainWindow::setupDb(){

refreshPatientWidget();

refreshVrachWidget();

refreshOtdelenieWidget();

refreshPalataWidget();

}

// обновить карты пациентов

void MainWindow::refreshKartaWidget(int id_pac){

for (int i = ui->tableWidget_karta->rowCount(); i >=0; i--){

ui->tableWidget_karta->removeRow(i);

}

QSqlQuery query;

query.prepare("SELECT DISTINCT data_sozd, id_vracha, status, id_palaty, id_karty FROM karta WHERE id_pacienta =:pid");

query.bindValue(0, id_pac);

query.exec();

while (query.next()){

int rows = ui->tableWidget_karta->rowCount();

ui->tableWidget_karta->insertRow(rows);

ui->tableWidget_karta->setItem(rows, 0, new QTableWidgetItem(query.value(0).toString()));

QSqlQuery sql;

sql.prepare("SELECT DISTINCT familiya FROM vrach WHERE id_vracha ==:id_v");

sql.bindValue(0,query.value(1).toInt());

sql.exec();

while (sql.next())

ui->tableWidget_karta->setItem(rows, 1, new QTableWidgetItem(sql.value(0).toString()));

ui->tableWidget_karta->setItem(rows, 2, new QTableWidgetItem(query.value(2).toString()));

sql.prepare("SELECT DISTINCT no_palaty FROM palata WHERE id_palaty ==:id_p");

sql.bindValue(0,query.value(3).toInt());

sql.exec();

while (sql.next())

ui->tableWidget_karta->setItem(rows, 3, new QTableWidgetItem(sql.value(0).toString()));

ui->tableWidget_karta->setItem(rows, 4, new QTableWidgetItem(query.value(4).toString()));

}

query.exec("SELECT id_karty FROM vypisannye_pacienty");

while(query.next()){

for (int i = 0; i < ui->tableWidget_karta->rowCount(); i++){

QString id_karty = ui->tableWidget_karta->item(i, 4)->text();

if(query.value(0).toString() == id_karty){

ui->tableWidget_karta->item(i,0)->setBackgroundColor(Qt::darkCyan);

ui->tableWidget_karta->item(i,1)->setBackgroundColor(Qt::darkCyan);

ui->tableWidget_karta->item(i,2)->setBackgroundColor(Qt::darkCyan);

ui->tableWidget_karta->item(i,3)->setBackgroundColor(Qt::darkCyan);

}

}

}

}

//отображение карт пациентов

void MainWindow::on_tableWidget_patient_itemSelectionChanged(){

if (!ui->tableWidget_patient->selectionModel()->selectedIndexes().isEmpty()){

int row = ui->tableWidget_patient->selectionModel()->selectedIndexes()[0].row();

int patient_id = ui->tableWidget_patient->item(row,11)->text().toInt();

refreshKartaWidget(patient_id);

if (ui->actionAdd->isEnabled()){

ui->pushButton_add_karta->setEnabled(true);

ui->pushButton_del_karta->setEnabled(true);

ui->pushButton_ap_karta->setEnabled(true);

ui->pushButton_refresh_karta->setEnabled(true);

ui->pushButton_vypisat->setEnabled(true);

}

}

}

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

void MainWindow::on_pushButton_ap_karta_clicked(){

int row = ui->tableWidget_patient->selectionModel()->selectedIndexes()[0].row();

int id_pac = ui->tableWidget_patient->item(row,11)->text().toInt();

QSqlQuery query;

query.prepare("DELETE FROM karta WHERE id_pacienta =:id_p");

query.bindValue(0,id_pac);

query.exec();

for (int i = 0; i < ui->tableWidget_karta->rowCount(); i++){

QString data_sozd = ui->tableWidget_karta->item(i,0)->text();

int id_vrach;

QString famVracha = ui->tableWidget_karta->item(i,1)->text();

query.prepare("SELECT DISTINCT id_vracha FROM vrach WHERE familiya ==:fam");

query.bindValue(0, famVracha);

query.exec();

while (query.next())

id_vrach = query.value(0).toInt();

QString status = ui->tableWidget_karta->item(i,2)->text();

QString no_palaty = ui->tableWidget_karta->item(i,3)->text();

int id_palaty;

query.prepare("SELECT DISTINCT id_palaty FROM palata WHERE no_palaty ==:no_p ");

query.bindValue(0,no_palaty);

query.exec();

while(query.next())

id_palaty = query.value(0).toInt();

QString id_karty = ui->tableWidget_karta->item(i,4)->text();

query.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)");

query.bindValue(0,id_karty);

query.bindValue(1,data_sozd);

query.bindValue(2,id_vrach);

query.bindValue(3,id_pac);

query.bindValue(4,id_palaty);

query.bindValue(5,status);

query.exec();

}

refreshKartaWidget(id_pac);

}

//добавление пустой записи в таблицу карт пациента

void MainWindow::on_pushButton_add_karta_clicked(){

int rows = ui->tableWidget_karta->rowCount();

ui->tableWidget_karta->insertRow(rows);

for (int i = 0; i < ui->tableWidget_karta->columnCount(); i++)

ui->tableWidget_karta->setItem(rows, i, new QTableWidgetItem());

QDate date = QDate().currentDate();

ui->tableWidget_karta->item(rows, 0)->setText(date.toString("dd.MM.yyyy"));

QSqlQuery query;

query.prepare("SELECT familiya FROM vrach WHERE id_vracha =:id_v");

// query.bindValue(0,idUsersVrach);

query.exec();

if (query.next())

ui->tableWidget_karta->item(rows, 1)->setText(query.value(0).toString());

}

////удаление записи из таблицы карт пациента

void MainWindow::on_pushButton_del_karta_clicked(){

if (!ui->tableWidget_karta->selectionModel()->selectedIndexes().isEmpty()){

int rows = ui->tableWidget_karta->selectionModel()->selectedIndexes()[0].row();

int id_karty = ui->tableWidget_karta->item(rows, 4)->text().toInt();

QSqlQuery query;

query.prepare("DELETE FROM karta WHERE id_karty =:id_k");

query.bindValue("id_k", id_karty);

query.exec();

ui->tableWidget_karta->removeRow(rows);

}

}

//добавить строку на главном окне

void MainWindow::on_actionAdd_activated(){

int indexPage = ui->tabWidget->currentIndex();

switch (indexPage){

case 0:{

int rows = ui->tableWidget_patient->rowCount();

ui->tableWidget_patient->insertRow(rows);

for (int i = 0; i < ui->tableWidget_patient->columnCount(); i++)

ui->tableWidget_patient->setItem(rows, i, new QTableWidgetItem());

QDate date = QDate().currentDate();

ui->tableWidget_patient->item(rows, 9)->setText(date.toString("dd.MM.yyyy"));

break;

}

case 1:{

int rows = ui->tableWidget_vrach->rowCount();

ui->tableWidget_vrach->insertRow(rows);

for (int i = 0; i < ui->tableWidget_vrach->columnCount(); i++)

ui->tableWidget_vrach->setItem(rows, i, new QTableWidgetItem());

break;

}

case 2:{

int rows = ui->tableWidget_otdeleniya->rowCount();

ui->tableWidget_otdeleniya->insertRow(rows);

for (int i = 0; i < ui->tableWidget_otdeleniya->columnCount(); i++)

ui->tableWidget_otdeleniya->setItem(rows, i, new QTableWidgetItem());

break;

}

case 3:{

int rows = ui->tableWidget_palaty->rowCount();

ui->tableWidget_palaty->insertRow(rows);

for (int i = 0; i < ui->tableWidget_palaty->columnCount(); i++)

ui->tableWidget_palaty->setItem(rows, i, new QTableWidgetItem());

break;

}

default:

break;

}

}

//удаление записи в главном окне

void MainWindow::on_actionDell_activated(){

int indexPage = ui->tabWidget->currentIndex();

QSqlQuery query;

switch (indexPage){

case 0:{

if (!ui->tableWidget_patient->selectionModel()->selectedIndexes().isEmpty()){

int rows = ui->tableWidget_patient->selectionModel()->selectedIndexes()[0].row();

int id_pacienta = ui->tableWidget_patient->item(rows, 11)->text().toInt();

query.prepare("DELETE FROM pacient WHERE id_pacienta =:id_pac");

query.bindValue("id_pac", id_pacienta);

query.exec();

query.prepare("DELETE FROM nabludenie WHERE id_karty IN (SELECT id_karty FROM karta WHERE id_pacienta =:id_pac)");//удаление наблюдений за удаляемым пациентом

query.bindValue(0,id_pacienta);

query.exec();

query.prepare("DELETE FROM karta WHERE id_pacienta =:id_pac");//удалить в картах записи на удаляемого пациента

query.bindValue("id_pac", id_pacienta);

query.exec();

ui->tableWidget_patient->removeRow(rows);

break;

}

}

case 1:{

if (!ui->tableWidget_vrach->selectionModel()->selectedIndexes().isEmpty()){

int rows = ui->tableWidget_vrach->selectionModel()->selectedIndexes()[0].row();

int id_vracha = ui->tableWidget_vrach->item(rows, 10)->text().toInt();

query.prepare("DELETE FROM vrach WHERE id_vracha =:id_v");

query.bindValue("id_v", id_vracha);

query.exec();

ui->tableWidget_vrach->removeRow(rows);

break;

}

}

case 2:{

if (!ui->tableWidget_otdeleniya->selectionModel()->selectedIndexes().isEmpty()){

int rows = ui->tableWidget_otdeleniya->selectionModel()->selectedIndexes()[0].row();

int id_otdeleniya = ui->tableWidget_otdeleniya->item(rows, 3)->text().toInt();

query.prepare("DELETE FROM otdelenie WHERE id_otdeleniya =:id_otd");

query.bindValue("id_otd", id_otdeleniya);

query.exec();

ui->tableWidget_otdeleniya->removeRow(rows);

break;

}

}

case 3:{

if (!ui->tableWidget_palaty->selectionModel()->selectedIndexes().isEmpty()){

int rows = ui->tableWidget_palaty->selectionModel()->selectedIndexes()[0].row();

QString id_palaty = ui->tableWidget_palaty->item(rows, 2)->text();

query.prepare("DELETE FROM palata WHERE id_palaty =:id_pal");

query.bindValue("id_pal", id_palaty);

query.exec();

ui->tableWidget_palaty->removeRow(rows);

break;

}

}

default:

break;

}

}

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

void MainWindow::on_actionApply_activated(){

int indexPage = ui->tabWidget->currentIndex();

QSqlQuery query;

switch (indexPage){

case 0:{

for (int i=0; i<ui->tableWidget_patient->rowCount(); i++){

int id_pac = ui->tableWidget_patient->item(i,11)->text().toInt();

query.prepare("DELETE FROM pacient WHEHE id_pacienta =:id_p");

query.bindValue(0, id_pac);

query.exec();

}

for (int i = 0; i < ui->tableWidget_patient->rowCount(); i++){

QString fam = ui->tableWidget_patient->item(i, 0)->text();

QString imya = ui->tableWidget_patient->item(i, 1)->text();

QString otch = ui->tableWidget_patient->item(i, 2)->text();

QString pol = ui->tableWidget_patient->item(i, 3)->text();

QString data_rojd = ui->tableWidget_patient->item(i, 4)->text();

QString gorod = ui->tableWidget_patient->item(i, 5)->text();

QString adres = ui->tableWidget_patient->item(i, 6)->text();

QString telefon = ui->tableWidget_patient->item(i, 7)->text();

QString email = ui->tableWidget_patient->item(i, 8)->text();

QString data_dobav = ui->tableWidget_patient->item(i, 9)->text();

QString zametki = ui->tableWidget_patient->item(i, 10)->text();

QString id_pac = ui->tableWidget_patient->item(i, 11)->text();

query.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)");

query.bindValue(0,fam);

query.bindValue(1, imya);

query.bindValue(2, otch);

query.bindValue(3, pol);

query.bindValue(4, data_rojd);

query.bindValue(5, gorod);

query.bindValue(6, adres);

query.bindValue(7, telefon);

query.bindValue(8, email);

query.bindValue(9, data_dobav);

query.bindValue(10, zametki);

query.bindValue(11, id_pac);

query.exec();

}

refreshPatientWidget();

break;

}

case 1:{

for (int i = 0; i<ui->tableWidget_vrach->rowCount(); i++){

int id_vracha = ui->tableWidget_vrach->item(i, 10)->text().toInt();

query.prepare("DELETE FROM vrach WHERE id_vracha =:id_v");

query.bindValue(0,id_vracha);

query.exec();

}

for (int i = 0; i < ui->tableWidget_vrach->rowCount(); i++){

QString fam = ui->tableWidget_vrach->item(i, 0)->text();

QString imya = ui->tableWidget_vrach->item(i, 1)->text();

QString otch = ui->tableWidget_vrach->item(i, 2)->text();

QString dolj = ui->tableWidget_vrach->item(i, 3)->text();

int id_otdel;

query.prepare("SELECT DISTINCT id_otdeleniya FROM otdelenie WHERE name ==:name");

query.bindValue(0, ui->tableWidget_vrach->item(i, 4)->text());

query.exec();

while (query.next())

id_otdel = query.value(0).toInt();

QString kab = ui->tableWidget_vrach->item(i, 5)->text();

QString tel = ui->tableWidget_vrach->item(i, 6)->text();

QString email = ui->tableWidget_vrach->item(i, 7)->text();

QString login = ui->tableWidget_vrach->item(i, 8)->text();

QString pas = ui->tableWidget_vrach->item(i, 9)->text();

QString id_vracha = ui->tableWidget_vrach->item(i, 10)->text();

query.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)");

query.bindValue(":fam",fam);

query.bindValue("im", imya);

query.bindValue(":otch", otch);

query.bindValue(":dolj", dolj);

query.bindValue(":id_otdel", id_otdel);

query.bindValue(":kab", kab);

query.bindValue(":tel", tel);

query.bindValue(":email", email);

query.bindValue(":log", login);

query.bindValue(":pas", pas);

query.bindValue(":id_v", id_vracha);

query.exec();

}

refreshVrachWidget();

break;

}

case 2:{

for (int i = 0; i < ui->tableWidget_otdeleniya->rowCount(); i++){

int id_otdeleniya = ui->tableWidget_otdeleniya->item(i,3)->text().toInt();

query.prepare("DELETE FROM otdelenie WHERE id_otdeleniya =:id_otd");

query.bindValue(0, id_otdeleniya);

query.exec();

}

for (int i = 0; i < ui->tableWidget_otdeleniya->rowCount(); i++){

QString nazv = ui->tableWidget_otdeleniya->item(i,0)->text();

QString tel = ui->tableWidget_otdeleniya->item(i,1)->text();

QString email = ui->tableWidget_otdeleniya->item(i,2)->text();

QString id_otdel = ui->tableWidget_otdeleniya->item(i,3)->text();

query.prepare("INSERT INTO otdelenie (id_otdeleniya, name, telefon, email) VALUES (:id_otd,:name,:tel,:email)");

query.bindValue(0,id_otdel);

query.bindValue(1, nazv);

query.bindValue(2, tel);

query.bindValue(3,email);

query.exec();

}

refreshOtdelenieWidget();

break;

}

case 3:{

for (int i = 0; i < ui->tableWidget_palaty->rowCount(); i++){

int id_palaty = ui->tableWidget_palaty->item(i,2)->text().toInt();

query.prepare("DELETE FROM palata WHERE id_palaty =:id_p");

query.bindValue(0, id_palaty);

query.exec();

}

for (int i = 0; i< ui->tableWidget_palaty->rowCount(); i++){

QString no_pal = ui->tableWidget_palaty->item(i,0)->text();

QString kol_mest = ui->tableWidget_palaty->item(i,1)->text();

QString id_pal = ui->tableWidget_palaty->item(i,2)->text();

query.prepare("INSERT INTO palata (no_palaty, kol_mest, id_palaty) VALUES (:no_p,:kol_m,:id_p)");

query.bindValue(0,no_pal);

query.bindValue(1,kol_mest);

query.bindValue(2,id_pal);

query.exec();

}

refreshPalataWidget();

break;

}

default:

break;

}

}

//обновить содержимое таблицы карт пациента

void MainWindow::on_pushButton_refresh_karta_clicked(){

int row = ui->tableWidget_patient->selectionModel()->selectedIndexes()[0].row();

int patient_id = ui->tableWidget_patient->item(row,11)->text().toInt();

refreshKartaWidget(patient_id);

}

//смена пользователя

void MainWindow::on_actionChangeUser_activated(){

autorizationWidget = new autorization();

connect(autorizationWidget, SIGNAL(authorization_successfull(bool)), this, SLOT(setControlsEnabled(bool)));

autorizationWidget->show();

}

//обновить данные в таблицах главного окна программы

void MainWindow::on_actionRefresh_activated()

{

int indexPage = ui->tabWidget->currentIndex();

switch(indexPage){

case 0: {

refreshPatientWidget();

break;

}

case 1: {

refreshVrachWidget();

break;

}

case 2: {

refreshOtdelenieWidget();

break;

}

case 3: {

refreshPalataWidget();

break;

}

default:

break;

}

}

// выписать пациента

void MainWindow::on_pushButton_vypisat_clicked()

{

int row = ui->tableWidget_karta->selectionModel()->selectedIndexes()[0].row();

int id_karty = ui->tableWidget_karta->item(row, 4)->text().toInt();

QString path = QFileDialog::getOpenFileName(this, QString::fromLocal8Bit("Отчет о результатах лечения выписываемого пациента"), "C:\\");

QString dateNow = QDate().currentDate().toString("dd.MM.yyyy");

QString timeNow = QTime().currentTime().toString("HH:mm");

QSqlQuery query;

query.prepare("INSERT INTO vypisannye_pacienty (id_karty, data, vremya, otchet)"

"VALUES (:id_k,:date,:time,:otchet)");

query.bindValue(0, id_karty);

query.bindValue(1,dateNow);

query.bindValue(2,timeNow);

query.bindValue(3,path);

query.exec();

}

//открыть файл-отчет для данного выписанного пациента

void MainWindow::on_pushButton_infoVypisannogo_clicked()

{

int row = ui->tableWidget_karta->selectionModel()->selectedIndexes()[0].row();

QString id_karty = ui->tableWidget_karta->item(row, 4)->text();

QSqlQuery query;

query.prepare("SELECT otchet FROM vypisannye_pacienty WHERE id_karty =:id_k");

query.bindValue(0, id_karty);

query.exec();

while (query.next()){

QString filePath = query.value(0).toString();

QProcess::execute("winword "+filePath);

}

}

void MainWindow::on_action_search_triggered(){

int indexPage = ui->tabWidget->currentIndex();

switch(indexPage){

case 0: {

refreshPatientWidget();

break;

}

case 1: {

refreshVrachWidget();

break;

}

case 2: {

refreshOtdelenieWidget();

break;

}

case 3: {

refreshPalataWidget();

break;

}

default:

break;

}

}

//отображение наблюдений

void MainWindow::on_tableWidget_karta_itemDoubleClicked(QTableWidgetItem* item)

{

int row = ui->tableWidget_karta->selectionModel()->selectedIndexes()[0].row();

int id_k = ui->tableWidget_karta->item(row,4)->text().toInt();

if (id_k!= 0){

Supervision *supervision = new Supervision();

supervision->id_karty = id_k;

QSqlQuery query;

query.prepare("SELECT data,vremya,lekarstvo,dozirovka,procedura,analiz,rezultat,id_nabludeniya, id_karty FROM nabludenie WHERE id_karty =:id_k ");

query.bindValue(0,id_k);

query.exec();

while (query.next()){

int rows = supervision->ui->tableWidget->rowCount();

supervision->ui->tableWidget->insertRow(rows);

supervision->ui->tableWidget->setItem(rows, 0, new QTableWidgetItem(query.value(0).toString()));

supervision->ui->tableWidget->setItem(rows, 1, new QTableWidgetItem(query.value(1).toString()));

supervision->ui->tableWidget->setItem(rows, 2, new QTableWidgetItem(query.value(2).toString()));

supervision->ui->tableWidget->setItem(rows, 3, new QTableWidgetItem(query.value(3).toString()));

supervision->ui->tableWidget->setItem(rows, 4, new QTableWidgetItem(query.value(4).toString()));

supervision->ui->tableWidget->setItem(rows, 5, new QTableWidgetItem(query.value(5).toString()));

supervision->ui->tableWidget->setItem(rows, 6, new QTableWidgetItem(query.value(6).toString()));

supervision->ui->tableWidget->setItem(rows, 7, new QTableWidgetItem(query.value(7).toString()));

supervision->ui->tableWidget->setItem(rows, 8, new QTableWidgetItem(query.value(8).toString()));

}

// прописывает заголовок окна наблюдений

QString date_karty;

query.prepare ("SELECT data_sozd FROM karta WHERE id_karty =:id_k");

query.bindValue(0, id_k);

query.exec();

while (query.next())

date_karty = query.value(0).toString();

query.prepare("SELECT familiya, imya, otchestvo FROM pacient WHERE id_pacienta ="

"(SELECT id_pacienta FROM karta WHERE id_karty =:id_k)");

query.bindValue(0, id_k);

query.exec();

while (query.next()){

// const QString title = query.value(0).toString()+" "+ query.value(1).toString()+" "+query.value(2).toString()+", "+ date_karty;

supervision->setWindowTitle(query.value(0).toString()+" "+ query.value(1).toString()+" "+query.value(2).toString()+", "+ date_karty);

}

if (ui->pushButton_add_karta->isEnabled()){

supervision->ui->buttonAdd->setEnabled(true);

supervision->ui->buttonDelete->setEnabled(true);

supervision->ui->buttonApply->setEnabled(true);

supervision->ui->buttonRefresh->setEnabled(true);

}

supervision->show();

}

}

supervision.h

#ifndef SUPERVISION_H

#define SUPERVISION_H

#include <QWidget>

namespace Ui {

class Supervision;

}

class Supervision: public QWidget

{

Q_OBJECT

public:

Supervision(QWidget *parent = 0);

Ui::Supervision *ui;

int id_karty;

void refresh();

~Supervision();

private:

// Ui::Supervision *ui;

private slots:

void on_buttonRefresh_clicked();

void on_buttonApply_clicked();

void on_buttonDelete_clicked();

void on_buttonAdd_clicked();

signals:

};

#endif // SUPERVISION_H

supervision.cpp

#include <QTableWidget>

#include <QDate>

#include <QTime>

#include <QFileDialog>

#include "supervision.h"

#include "ui_supervision.h"

#include <connection.h>

Supervision::Supervision(QWidget *parent): QWidget(parent),ui(new Ui::Supervision){

ui->setupUi(this);

ui->tableWidget->setSelectionMode(QAbstractItemView::MultiSelection);

ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);

ui->tableWidget->hideColumn(7);

ui->tableWidget->hideColumn(8);

}

Supervision::~Supervision(){

delete ui;

}

void Supervision::refresh(){

for (int i = ui->tableWidget->rowCount()-1; i >= 0; i--){

ui->tableWidget->removeRow(i);

}

QSqlQuery query;

query.prepare("SELECT data, vremya, lekarstvo, dozirovka, procedura, analiz, rezultat, id_nabludeniya, id_karty FROM nabludenie WHERE id_karty ==:id_k ");

query.bindValue(0, id_karty);

query.exec();

while (query.next()){

int rows = 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()));

}

}

//добавить строку

void Supervision::on_buttonAdd_clicked()

{

int rows = ui->tableWidget->rowCount();

ui->tableWidget->insertRow(rows);

for (int i = 0; i < ui->tableWidget->columnCount(); i++)

ui->tableWidget->setItem(rows, i, new QTableWidgetItem());

QDate date = QDate().currentDate();

ui->tableWidget->item(rows, 0)->setText(date.toString("dd.MM.yyyy"));

QTime time = QTime().currentTime();

ui->tableWidget->item(rows,1)->setText(time.toString("HH.mm"));

}

//удалить строку

void Supervision::on_buttonDelete_clicked()

{

if(!ui->tableWidget->selectionModel()->selectedIndexes().isEmpty()){

int rows = ui->tableWidget->rowCount();

for (int i = rows - 1; i >= 0; i--){

if (ui->tableWidget->item(i, 0)->isSelected()){

int id_sv = ui->tableWidget->item(i, 7)->text().toInt();

QSqlQuery query;

query.prepare("DELETE FROM nabludenie WHERE id_nabludeniya =:id_sv");

query.bindValue("id_sv", id_sv);

query.exec();

ui->tableWidget->removeRow(i);

}

}

}

}

//сохранить изменения

void Supervision::on_buttonApply_clicked()

{

QSqlQuery query;

query.prepare("DELETE FROM nabludenie WHERE id_karty =:id");

query.bindValue(0,id_karty);

query.exec();

int rows = ui->tableWidget->rowCount();

for (int i = 0; i < rows; i++){

QString date = ui->tableWidget->item(i,0)->text();

QString time = ui->tableWidget->item(i,1)->text();

QString lek = ui->tableWidget->item(i,2)->text();

QString doz = ui->tableWidget->item(i,3)->text();

QString proc = ui->tableWidget->item(i,4)->text();

QString analiz = ui->tableWidget->item(i,5)->text();

QString result = ui->tableWidget->item(i,6)->text();

QString id_sv = ui->tableWidget->item(i,7)->text();

query.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)");

query.bindValue(0,id_karty);

query.bindValue(1,date);

query.bindValue(2,time);

query.bindValue(3,lek);

query.bindValue(4,doz);

query.bindValue(5,proc);

query.bindValue(6,analiz);

query.bindValue(7,result);

query.bindValue(8,id_sv);

query.exec();

}

refresh();

}

//void Supervision::putPath(){

// QString = QFileDialog::getOpenFileName(this, QString::fromLocal8Bit("Прикрепить документ к наблюдению"), "C:\\");

// ui->tableWidget->item()

//}

void Supervision::on_buttonRefresh_clicked()

{

refresh();

}

autorization.h

#ifndef AUTORIZATION_H

#define AUTORIZATION_H

#include <QWidget>

//#include "mainwindow.h"

//#include "connection.h"

namespace Ui {

class autorization;

}

class autorization: public QWidget {

Q_OBJECT

public:

autorization(QWidget *parent = 0);

Ui::autorization *ui;

~autorization();

signals:

void authorization_successfull(bool);

private:

// Ui::autorization *ui;

private slots:

void on_pushButton_Out_clicked();

void on_pushButton_Enter_clicked();

};

#endif // AUTORIZATION_H

autorization.cpp

#include <QSqlQuery>

#include <QMessageBox>

#include "autorization.h"

#include "ui_autorization.h"

autorization::autorization(QWidget *parent): QWidget(parent), ui(new Ui::autorization){

ui->setupUi(this);

}

autorization::~autorization()

{

delete ui;

}

void autorization::on_pushButton_Enter_clicked(){

QString login = ui->lineEdit_Login->text();

QString password = ui->lineEdit_Password->text();

QSqlQuery query;

query.prepare("SELECT id_vracha FROM vrach WHERE login =:log AND parol =:pasw");

query.bindValue(0,login);

query.bindValue(1,password);

query.exec();

if (query.next()){

QMessageBox::information(this,"",QString::fromLocal8Bit("Здравствуйте, ")+login+"!");

emit authorization_successfull(true);

close();

}

else QMessageBox::information(this,"",QString::fromLocal8Bit("Неверное имя пользователя или пароль."));

}

void autorization::on_pushButton_Out_clicked(){

close();

}

itemdelegate.h

#ifndef ITEMDELEGATE_H

#define ITEMDELEGATE_H

#include <QItemDelegate>

class ItemDelegate: public QItemDelegate{

Q_OBJECT

public:

ItemDelegate(QObject *parent = 0);

QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;

virtual void setEditorData(QWidget *editor, const QModelIndex &index) const;

void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;

void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const;

signals:

public slots:

};

class forOtdelenieDelegate: public ItemDelegate{

Q_OBJECT

public:

virtual void setEditorData(QWidget *editor, const QModelIndex &index) const;

signals:

public slots:

};

class forVrachDelegate: public ItemDelegate{

Q_OBJECT

public:

virtual void setEditorData(QWidget *editor, const QModelIndex &index) const;

signals:

public slots:

};

class forPalatyDelegate: public ItemDelegate{

Q_OBJECT

public:

virtual void setEditorData(QWidget *editor, const QModelIndex &index) const;

signals:

public slots:

};

class forStatusDelegate: public ItemDelegate{

Q_OBJECT

public:

virtual void setEditorData(QWidget *editor, const QModelIndex &index) const;

signals:

public slots:

};

#endif // ITEMDELEGATE_H

itemdelegate.cpp

#include <QComboBox>

#include <QSqlQuery>

#include "itemdelegate.h"

ItemDelegate::ItemDelegate(QObject *parent): QItemDelegate(parent){}

QWidget* ItemDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const{

QComboBox *editor = new QComboBox(parent);

editor->setEditable(true);

return editor;

}

void ItemDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const{

QComboBox *comboBox = static_cast<QComboBox*>(editor);

model->setData(index, comboBox->itemText(comboBox->currentIndex()));

}

void ItemDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const{

QComboBox *comboBox = static_cast<QComboBox*>(editor);

comboBox->addItem(QString::fromLocal8Bit("муж"));

comboBox->addItem(QString::fromLocal8Bit("жен"));

}

void ItemDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &/*index*/) const{

editor->setGeometry(option.rect);

}

void forOtdelenieDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const{

QComboBox *comboBox = static_cast<QComboBox*>(editor);

QSqlQuery query;

query.exec("SELECT DISTINCT name FROM otdelenie WHERE id_otdeleniya!=0 ");

while (query.next()){

comboBox->addItem(query.value(0).toString());

}

}

void forVrachDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const{

QComboBox *comboBox = static_cast<QComboBox*>(editor);

QSqlQuery query;

query.exec("SELECT DISTINCT familiya FROM vrach WHERE id_vracha!= 0 ");

while (query.next()){

comboBox->addItem(query.value(0).toString());

}

}

void forPalatyDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const{

QComboBox *comboBox = static_cast<QComboBox*>(editor);

QSqlQuery query;

query.exec("SELECT DISTINCT no_palaty FROM palata WHERE id_palaty!= 0 ");

while (query.next()){

comboBox->addItem(query.value(0).toString());

}

}

void forStatusDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const{

QComboBox *comboBox = static_cast<QComboBox*>(editor);

comboBox->addItem(QString::fromLocal8Bit("амбулаторно"));

comboBox->addItem(QString::fromLocal8Bit("стационарно"));

}

Размещено на Allbest.ru


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

  • Функциональная модель системы паспортного стола. Логическая и физическая модель данных. Классификация моделей данных. Тексты модулей приложения. Инструкция по работе с программой. Описание входной и выходной информации, пользовательского интерфейса.

    курсовая работа [566,8 K], добавлен 23.10.2010

  • Ведение базы данных кассы кинотеатра. Обоснование необходимости компьютерной обработки информации. Требования к программному, аппаратному обеспечению, графическому интерфейсу. Выбор, обоснование среды разработки. Модель предметной области. Этапы отладки.

    дипломная работа [1,5 M], добавлен 09.09.2010

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

    курсовая работа [2,4 M], добавлен 05.07.2015

  • Создание баз данных с использованием Database Desktop. Проведение автоматизации рабочего места кассира. Описание входной и выходной информации. Выбор среды реализации, состава и параметров технических средств. Проектирование интерфейса программы.

    курсовая работа [1021,5 K], добавлен 22.01.2015

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

    курсовая работа [2,1 M], добавлен 16.04.2017

  • Создание базы данных для библиотеки, ведение учета сдачи и выдачи, формирование каталога книг. Требования заказчика к системе. План-график обследования деятельности библиотекаря. Структурные единицы входной, выходной информации. Логическая модель данных.

    курсовая работа [1,7 M], добавлен 25.04.2012

  • Описание входной и выходной документации. Требования к интерфейсу Windows-приложения и информационной базе. Разработка алгоритмов обработки данных и SQL-запросов к базе данных. Язык программирования Object Pascal и среда Delphi. Используемая СУБД.

    дипломная работа [228,7 K], добавлен 25.11.2007

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

    курсовая работа [353,1 K], добавлен 25.07.2012

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

    курсовая работа [45,1 K], добавлен 09.03.2009

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

    курсовая работа [1,7 M], добавлен 16.06.2022

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