Автоматизация учета пациентов больницы
Требования к программному продукту: базе данных и интерфейсу. Анализ входной, выходной и постоянной информации. Выбор и обоснование выбора среды разработки, программной реализации, описание внутренней среды. Логическая и физическая модель данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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