264 lines
7.5 KiB
C++
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);
|
|
|
|
}
|