/* -*- 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 #include #include #include #include #include #include #include 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; 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 CaveVector; typedef patient_t Patient; typedef QVector 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(QByteArray data, QString mimetype); public slots: void replyFinished(QNetworkReply*); private: void makeTransfer(reply_t t, QString uri, QMap params); QNetworkAccessManager *manager; QNetworkRequest request; QString host; unsigned short int port; QMap replytypes; }; class PraxisdSync : public QThread { Q_OBJECT public: PraxisdSync(QString host, unsigned short int port); ~PraxisdSync(); 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); bool hasError(); QString errorString(); void run(); private slots: void networkError(QString); 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; volatile bool running; bool error; QString errorStr; }; #endif/*__PRACRO_PRAXISD_H__*/