diff options
Diffstat (limited to 'client/praxisd.h')
-rw-r--r-- | client/praxisd.h | 85 |
1 files changed, 78 insertions, 7 deletions
diff --git a/client/praxisd.h b/client/praxisd.h index dfaac59..c9ccaf3 100644 --- a/client/praxisd.h +++ b/client/praxisd.h @@ -28,12 +28,31 @@ #ifndef __PRACRO_PRAXISD_H__ #define __PRACRO_PRAXISD_H__ -class Praxisd { +#include <QObject> +#include <QString> +#include <QVector> + +#include <QNetworkAccessManager> +#include <QNetworkRequest> + +#include <QByteArray> +#include <QThread> +#include <QSemaphore> + +class Praxisd : public QObject { Q_OBJECT -public; - Praxisd(); +public: + typedef enum { + journal, + cavelist, + patient, + dokmenu, + dokmenufile + } reply_t; - QString journal_get_by_cpr(QString patientid); + Praxisd(QString host, quint16 port); + + void journal_get_by_cpr(QString patientid); typedef struct { QString sogenr; @@ -42,7 +61,7 @@ public; QString bemaerkning2; QString bemaerkning3; } cave_t; - QVector<cave_t> diverse_get_cave(QString sogenr); + void diverse_get_cave(QString sogenr); typedef struct { QString sogenr; @@ -87,18 +106,70 @@ public; QString unknown251; QString jtime; } patient_t; - patient_t patient_get_by_cpr(QString cpr); + void patient_get_by_cpr(QString cpr); typedef struct { + QString cpr; QString group; QString subject; QString filename; size_t filesize; QString date; } dokmenu_t; - QVector<dokmenu_t> dokmenu_get_all_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 gotCave(QVector<cave_t> cave); + void gotPatient(patient_t patient); + void gotDokMenu(QVector<dokmenu_t> 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); + QVector<Praxisd::cave_t> diverse_get_cave(QString sogenr); + Praxisd::patient_t patient_get_by_cpr(QString cpr); + QVector<Praxisd::dokmenu_t> dokmenu_get_all_by_cpr(QString cpr); QString dokmenu_get_by_cpr_and_name(QString cpr, QString name); + + void run(); + +public slots: + void gotCaveList(QVector<Praxisd::cave_t>); + +private: + Praxisd praxisd; + QSemaphore rsem; + QSemaphore wsem; + + Praxisd::reply_t request_type; + QString request_sogenr; + + QVector<Praxisd::cave_t> cavelist; }; #endif/*__PRACRO_PRAXISD_H__*/ |