From 813b50f0c91805b22941bfb28758b49f8e00cb22 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Fri, 7 Sep 2012 11:08:01 +0200 Subject: Make client use luapraxisd.h from server folder. Add stub functions to luapraxisd in client. --- client/praxisd.cc | 137 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) (limited to 'client/praxisd.cc') diff --git a/client/praxisd.cc b/client/praxisd.cc index 2fbaddc..42fdd0c 100644 --- a/client/praxisd.cc +++ b/client/praxisd.cc @@ -68,6 +68,75 @@ static CaveVector getCaveList(QByteArray data) return cavelist; } +#define DOBEHANDLING(x) if(element.tagName() == #x) behandling.x = element.text() +static BehandlingVector getBehandlingList(QByteArray data) +{ + QDomDocument doc; + doc.setContent(data); + + BehandlingVector behandlinglist; + + QDomNode praxisd = doc.documentElement(); + QDomNodeList nodes = praxisd.childNodes(); + for(int i = 0; i < nodes.count(); i++) { + QDomNode node = nodes.at(i); + QDomElement element = node.toElement(); + if(element.tagName() == "div_behandling") { + + behandling_t behandling; + behandling.sogenr = element.attribute("sogenr"); + + QDomNodeList nodes = element.childNodes(); + for(int j = 0; j < nodes.count(); j++) { + QDomNode node = nodes.at(j); + QDomElement element = node.toElement(); + DOBEHANDLING(kode); + DOBEHANDLING(behandling); + DOBEHANDLING(bemaerkning); + DOBEHANDLING(udregning); + } + + behandlinglist.push_back(behandling); + } + } + + return behandlinglist; +} + +#define DODIAGNOSE(x) if(element.tagName() == #x) diagnose.x = element.text() +static DiagnoseVector getDiagnoseList(QByteArray data) +{ + QDomDocument doc; + doc.setContent(data); + + DiagnoseVector diagnoselist; + + QDomNode praxisd = doc.documentElement(); + QDomNodeList nodes = praxisd.childNodes(); + for(int i = 0; i < nodes.count(); i++) { + QDomNode node = nodes.at(i); + QDomElement element = node.toElement(); + if(element.tagName() == "div_diagnose") { + + diagnose_t diagnose; + diagnose.sogenr = element.attribute("sogenr"); + + QDomNodeList nodes = element.childNodes(); + for(int j = 0; j < nodes.count(); j++) { + QDomNode node = nodes.at(j); + QDomElement element = node.toElement(); + DODIAGNOSE(kode); + DODIAGNOSE(diagnose); + DODIAGNOSE(bemaerkning); + } + + diagnoselist.push_back(diagnose); + } + } + + return diagnoselist; +} + #define DOPATIENT(x) if(element.tagName() == #x) patient.x = element.text() static Patient getPatient(QByteArray data) { @@ -208,6 +277,14 @@ void Praxisd::replyFinished(QNetworkReply *reply) emit gotCaveList(getCaveList(reply->readAll())); break; + case behandlinglist: + emit gotBehandlingList(getBehandlingList(reply->readAll())); + break; + + case diagnoselist: + emit gotDiagnoseList(getDiagnoseList(reply->readAll())); + break; + case patient: emit gotPatient(getPatient(reply->readAll())); break; @@ -264,6 +341,20 @@ void Praxisd::diverse_get_cave(QString sogenr) makeTransfer(cavelist, "/praxisd/1.0/diverse/get_all_by_sogenr", params); } +void Praxisd::diverse_get_behandling(QString sogenr) +{ + QMap params; + params["sogenr"] = sogenr; + makeTransfer(behandlinglist, "/praxisd/1.0/diverse/get_all_by_sogenr", params); +} + +void Praxisd::diverse_get_diagnose(QString sogenr) +{ + QMap params; + params["sogenr"] = sogenr; + makeTransfer(diagnoselist, "/praxisd/1.0/diverse/get_all_by_sogenr", params); +} + void Praxisd::patient_get_by_cpr(QString cpr) { QMap params; @@ -317,6 +408,10 @@ void PraxisdSync::run() connect(&praxisd, SIGNAL(gotCaveList(CaveVector)), this, SLOT(gotCaveList(CaveVector)), Qt::DirectConnection); + connect(&praxisd, SIGNAL(gotBehandlingList(BehandlingVector)), + this, SLOT(gotBehandlingList(BehandlingVector)), Qt::DirectConnection); + connect(&praxisd, SIGNAL(gotDiagnoseList(DiagnoseVector)), + this, SLOT(gotDiagnoseList(DiagnoseVector)), Qt::DirectConnection); connect(&praxisd, SIGNAL(gotPatient(Patient)), this, SLOT(gotPatient(Patient)), Qt::DirectConnection); @@ -339,6 +434,12 @@ void PraxisdSync::run() case Praxisd::cavelist: praxisd.diverse_get_cave(request_sogenr); break; + case Praxisd::behandlinglist: + praxisd.diverse_get_behandling(request_sogenr); + break; + case Praxisd::diagnoselist: + praxisd.diverse_get_diagnose(request_sogenr); + break; case Praxisd::patient: praxisd.patient_get_by_cpr(request_cpr); break; @@ -380,6 +481,20 @@ void PraxisdSync::gotCaveList(CaveVector cl) quit(); } +void PraxisdSync::gotBehandlingList(BehandlingVector bl) +{ + behandlinglist = bl; + rsem.release(); + quit(); +} + +void PraxisdSync::gotDiagnoseList(DiagnoseVector dl) +{ + diagnoselist = dl; + rsem.release(); + quit(); +} + void PraxisdSync::gotPatient(Patient p) { patient = p; @@ -410,6 +525,28 @@ CaveVector PraxisdSync::diverse_get_cave(QString sogenr) return cavelist; } +BehandlingVector PraxisdSync::diverse_get_behandling(QString sogenr) +{ + request_type = Praxisd::behandlinglist; + request_sogenr = sogenr; + + wsem.release(); + rsem.acquire(); + + return behandlinglist; +} + +DiagnoseVector PraxisdSync::diverse_get_diagnose(QString sogenr) +{ + request_type = Praxisd::diagnoselist; + request_sogenr = sogenr; + + wsem.release(); + rsem.acquire(); + + return diagnoselist; +} + Patient PraxisdSync::patient_get_by_cpr(QString cpr) { request_type = Praxisd::patient; -- cgit v1.2.3