/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set et sw=2 ts=2: */ /*************************************************************************** * database.h * * Thu Sep 6 10:59:07 CEST 2007 * Copyright 2007 Bent Bisballe Nyeng * deva@aasimon.org ****************************************************************************/ /* * This file is part of Pracro. * * Pracro is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Pracro is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Pracro; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef __PRACRO_DATABASE_H__ #define __PRACRO_DATABASE_H__ #include #include "pracrodao.h" #include "transaction.h" #include "template.h" #include "debug.h" class Database { public: Database(std::string _backend, std::string _host, std::string _port, std::string _user, std::string _passwd, std::string _dbname); ~Database(); // Make a commit to the db void commitTransaction(std::string user, std::string patientid, Macro ¯o, Fields &fields, time_t now = time(NULL)) { PRACRO_DEBUG(db, "%s, %s, %s,...\n", user.c_str(), patientid.c_str(), macro.attributes["name"].c_str()); if(dao) dao->commitTransaction(user, patientid, macro, fields, now); } // Get a list of values from the db Values getValues(std::string patientid, Fieldnames &fieldnames, time_t oldest = 0) { PRACRO_DEBUG(db, "%s, <%u fieldnames>, %ld\n", patientid.c_str(), fieldnames.size(), oldest); if(dao) return dao->getLatestValues(patientid, NULL, fieldnames, oldest); else return Values(); } // Check if a macro has been committed. bool checkMacro(std::string patientid, std::string macro, time_t oldest = 0) { PRACRO_DEBUG(db, "%s, %s, %ld\n", patientid.c_str(), macro.c_str(), oldest); if(!dao) return false; return dao->nrOfCommits(patientid, macro, oldest) > 0; } // Get latest resume of a given macro std::string getResume(std::string patientid, Macro ¯o, time_t oldest) { PRACRO_DEBUG(db, "%s, %s, %ld\n", patientid.c_str(), macro.attributes["name"].c_str(), oldest); if(!dao) return ""; Fieldnames fn; fn.push_back("journal.resume"); Values v = dao->getLatestValues(patientid, ¯o, fn, oldest); Values::iterator i = v.find("journal.resume"); if(i != v.end()) return i->second.value; else return ""; } void addFieldname(std::string name, std::string description) { if(!dao) return; dao->addFieldname(name, description); } void delFieldname(std::string name) { if(!dao) return; dao->delFieldname(name); } std::vector getFieldnames() { if(!dao) { std::vector fieldnames; return fieldnames; } return dao->getFieldnames(); } private: PracroDAO *dao; }; #endif/*__PRACRO_DATABASE_H__*/