project/xyylMCWEACSystem/datamanager.cpp

264 lines
7.5 KiB
C++

#include "datamanager.h"
#include <QDebug>
#include <QCoreApplication>
#include <QFile>
DataManager::DataManager(QObject * parent ):QObject(parent)
{
init();
};
DataManager::~DataManager()
{
}
DataManager& DataManager::instance()
{
static DataManager dataManager;
return dataManager;
}
void DataManager::init()
{
QString sFileName = QCoreApplication::applicationDirPath()+"/medicalRecode.db";
//bool bexist = QFile::exists(sFileName);
//if(bexist)
{
SqlCore::init("QSQLITE","user","passdwd",sFileName);
}
initTable();
}
void DataManager::initTable()
{
//病例信息
{
/*
病历管理
检查号
类型: 住院或门诊
姓名
性别 男女
出生日期
年龄
左右利Laterality 左右
检查日期 inspection
其他信息
*/
QMap<QString, QString> map;
map.insert("f_CheckNum", "TEXT PRIMARY KEY");
map.insert("f_Type", "TEXT NOT NULL");
map.insert("f_Name", "TEXT NOT NULL");
map.insert("f_Sex", "TEXT NOT NULL");
map.insert("f_Birthday", "TEXT NOT NULL");
map.insert("f_Year", "TEXT NOT NULL");
map.insert("f_Laterality", "TEXT NOT NULL");
map.insert("f_InspectDate", "TEXT NOT NULL");
map.insert("f_Other", "TEXT NOT NULL");
SqlGenerate sqlGener;
QString sql = sqlGener.createTable("t_RecodManage",map);
qDebug()<<sql<<endl;
m_sqlcore.execute(sql);
}
//医院信息
{
/*
医院名称
用户名称
科室
用户密码
用户人数
确认密码
数据名称
*/
QMap<QString, QString> map;
map.insert("f_Id", "TEXT PRIMARY KEY");
map.insert("f_HostpitalName", "TEXT ");
map.insert("f_UserName", "TEXT NOT NULL");
map.insert("f_Section", "TEXT NOT NULL");
map.insert("f_UserPasswd", "TEXT NOT NULL");
map.insert("f_UserNum", "TEXT NOT NULL");
map.insert("f_RePasswd", "TEXT NOT NULL");
map.insert("f_DataName", "TEXT NOT NULL");
SqlGenerate sqlGener;
QString sql = sqlGener.createTable("t_Hostpital",map);
qDebug()<<sql<<endl;
m_sqlcore.execute(sql);
}
}
//更新医院信息
bool DataManager::updateHospitalInfo(QString sHostpitalName,
QString UserName,
QString sSection,
QString UserPasswd,
QString UserNum,
QString RePasswd,
QString DataName)
{
QMap<QString, QVariant> map;
map.insert("f_Id", 0);
map.insert("f_HostpitalName", sHostpitalName);
map.insert("f_UserName", UserName);
map.insert("f_Section", sSection);
map.insert("f_UserPasswd", UserPasswd);
map.insert("f_UserNum", UserNum);
map.insert("f_RePasswd", RePasswd);
map.insert("f_DataName",DataName);
SqlGenerate sqlGener;
QString sql = sqlGener.insertData("t_Hostpital",map);
qDebug()<<sql<<endl;
return m_sqlcore.execute(sql);
}
bool DataManager::HospitalInfo(QString& sHostpitalName,
QString& UserName,
QString& sSection,
QString& UserPasswd,
QString& UserNum,
QString& RePasswd,
QString& DataName)
{
QStringList listName;
listName<<"f_HostpitalName";
listName<<"f_UserName";
listName<<"f_Section";
listName<<"f_UserPasswd";
listName<<"f_UserNum";
listName<<"f_RePasswd";
listName<<"f_DataName";
SqlGenerate sqlGener;
QString sql = sqlGener.selectWhere("t_Hostpital",listName);
bool ret =false;
auto query(m_sqlcore.select(sql));
if (query.isNull())
{
return ret;
}
while (query->next())
{
int i =0;
sHostpitalName = query->value(i++).toString();;
UserName = query->value(i++).toString();
sSection= query->value(i++).toString();
UserPasswd = query->value(i++).toString();
UserNum = query->value(i++).toString();
RePasswd = query->value(i++).toString();
DataName = query->value(i++).toString();
}
query->finish();
query->clear();
return true;
}
bool DataManager::updateMedicRecord(
QString CheckNum ,
QString Type ,
QString _Name ,
QString Sex,
QString Birthday,
QString Year,
QString Laterality,
QString InspectDate,
QString Other)
{
QMap<QString, QVariant> map;
map.insert("f_CheckNum", CheckNum);
map.insert("f_Type", Type);
map.insert("f_Name", _Name);
map.insert("f_Sex", Sex);
map.insert("f_Birthday", Birthday);
map.insert("f_Year", Year);
map.insert("f_Laterality", Laterality);
map.insert("f_InspectDate", InspectDate);
map.insert("f_Other", Other);
SqlGenerate sqlGener;
QString sql = sqlGener.insertData("t_RecodManage",map);
qDebug()<<sql<<endl;
return m_sqlcore.execute(sql);
}
int DataManager::getMedicRecordCount( QString sName)
{
int ret = -1;
QString querySql = QString("select count(*) from t_RecodManage where f_Name LIKE '%") + sName + "%';";
//qDebug() << "querySql = " << querySql << endl;
auto query(m_sqlcore.select(querySql));
if (!query.isNull())
{
if (query->first())
{
ret = query->value(0).toInt();
}
query->finish();
query->clear();
}
return ret;
}
uint DataManager::getMedicRecordList(const QString& fileName,
QList<MedicRecord>& filesInfo,
int& curPage,
int perPageCnt)
{
uint ret = 0;
filesInfo.clear();
QString tmpFileName = fileName;
QString querySql = QString("SELECT f_CheckNum,f_Type,f_Name, f_Sex,f_Birthday,f_Year,f_Laterality,f_InspectDate,f_Other from t_RecodManage where f_Name LIKE '%") + tmpFileName + "%'";
querySql += QString(" LIMIT %1 offset %2;").arg(perPageCnt)
.arg(curPage * perPageCnt);
auto query(m_sqlcore.select(querySql));
if (query.isNull())
{
return 0;
}
while (query->next())
{
MedicRecord info;
info.m_CheckNum= query->value(0).toString();
info.m_Type = query->value(1).toString();
info.m_Name = query->value(2).toString();
info.m_Sex = query->value(3).toString();
info.m_Birthday = query->value(4).toString();
info.m_Year = query->value(5).toString();
info.m_Laterality = query->value(6).toString();
info.m_InspectDate= query->value(7).toString();
info.m_Other = query->value(8).toString();
filesInfo.append(info);
++ret;
}
if (ret > 0)
{
++curPage;
}
query->finish();
query->clear();
return ret;
}
bool DataManager::deleteNumRecode(QString checkNum)
{
SqlGenerate sqlGener;
QString sql = QString("delete from %1 where %2").arg("t_RecodManage").arg("f_CheckNum = '"+checkNum+"';");
return m_sqlcore.execute(sql);
}