diff options
Diffstat (limited to 'client/praxisd.h')
-rw-r--r-- | client/praxisd.h | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/client/praxisd.h b/client/praxisd.h new file mode 100644 index 0000000..1268be7 --- /dev/null +++ b/client/praxisd.h @@ -0,0 +1,189 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + * praxisd.h + * + * Tue Oct 11 15:20:18 CEST 2011 + * Copyright 2011 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_PRAXISD_H__ +#define __PRACRO_PRAXISD_H__ + +#include <QObject> +#include <QString> +#include <QVector> + +#include <QNetworkAccessManager> +#include <QNetworkRequest> + +#include <QByteArray> +#include <QThread> +#include <QSemaphore> + +typedef struct { + QString sogenr; + QString cave; + QString bemaerkning1; + QString bemaerkning2; + QString bemaerkning3; +} cave_t; + +typedef struct { + QString sogenr; + QString sogedato; + QString sogetxt; +} sogeord_t; + +typedef struct { + QString cpr; + QString fornavne; + QString efternavn; + QString stilling; + QString gade; + QString by; + QString telefonnumre; + QString sikringsgr; + QString amtsnr; + QString sygekontor; + QString henvnr; + QString frilinie1; + QString frilinie2; + QString frilinie3; + QString frilinie4; + QString frilinie5; + QVector<sogeord_t> sogeord; + QString ydernr; + QString created; + QString donottouch; + QString visus; + QString labkort; + QString medkort; + QString jlock; + QString unknown1; + QString henvdato; + QString aarhund; + QString fakturadato; + QString fakturabelob; + QString betaldato; + QString betalbelob; + QString jdato; + QString unknown250; + QString unknown251; + QString jtime; +} patient_t; + +typedef struct { + QString cpr; + QString group; + QString subject; + QString filename; + size_t filesize; + QString date; +} dokmenu_t; + +typedef QVector<cave_t> CaveVector; +typedef patient_t Patient; +typedef QVector<dokmenu_t> DokMenuVector; + +class Praxisd : public QObject { +Q_OBJECT +public: + typedef enum { + journal, + cavelist, + patient, + dokmenu, + dokmenufile + } reply_t; + + Praxisd(QString host, quint16 port); + + void journal_get_by_cpr(QString patientid); + + void diverse_get_cave(QString sogenr); + + void patient_get_by_cpr(QString cpr); + + void dokmenu_get_all_by_cpr(QString cpr); + + void dokmenu_get_by_cpr_and_name(QString cpr, QString name); + +signals: + void gotReply(QByteArray data); + void networkError(QString text); + + void gotJournal(QString data); + void gotCaveList(CaveVector cave); + void gotPatient(Patient patient); + void gotDokMenu(DokMenuVector dokmenu); + void gotDokMenuFile(QString data); + +public slots: + void replyFinished(QNetworkReply*); + +private: + void makeTransfer(reply_t t, QString uri, QMap<QString, QString> params); + + QNetworkAccessManager *manager; + QNetworkRequest request; + + QString host; + unsigned short int port; + + QMap<QNetworkReply*, reply_t> replytypes; +}; + +class PraxisdSync : public QThread { +Q_OBJECT +public: + PraxisdSync(QString host, unsigned short int port); + + QString journal_get_by_cpr(QString patientid); + CaveVector diverse_get_cave(QString sogenr); + Patient patient_get_by_cpr(QString cpr); + DokMenuVector dokmenu_get_all_by_cpr(QString cpr); + QString dokmenu_get_by_cpr_and_name(QString cpr, QString name); + + void run(); + +public slots: + void gotCaveList(CaveVector); + void gotPatient(Patient); + void gotDokMenu(DokMenuVector); + +private: + QString host; + quint16 port; + + QSemaphore rsem; + QSemaphore wsem; + + Praxisd::reply_t request_type; + QString request_sogenr; + QString request_cpr; + + CaveVector cavelist; + Patient patient; + DokMenuVector dokmenu; +}; + +#endif/*__PRACRO_PRAXISD_H__*/ |