summaryrefslogtreecommitdiff
path: root/client/praxisd.cc
diff options
context:
space:
mode:
Diffstat (limited to 'client/praxisd.cc')
-rw-r--r--client/praxisd.cc137
1 files changed, 137 insertions, 0 deletions
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<QString, QString> params;
+ params["sogenr"] = sogenr;
+ makeTransfer(behandlinglist, "/praxisd/1.0/diverse/get_all_by_sogenr", params);
+}
+
+void Praxisd::diverse_get_diagnose(QString sogenr)
+{
+ QMap<QString, QString> params;
+ params["sogenr"] = sogenr;
+ makeTransfer(diagnoselist, "/praxisd/1.0/diverse/get_all_by_sogenr", params);
+}
+
void Praxisd::patient_get_by_cpr(QString cpr)
{
QMap<QString, QString> 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;