From f49186b63888caedd5e0dad4a52a680fb28834a4 Mon Sep 17 00:00:00 2001
From: deva <deva>
Date: Mon, 3 Sep 2007 09:14:09 +0000
Subject: Added new XML format.

---
 design/xmlformat.tex | 159 ++++++++++++++++++++++++++++++++++++---------------
 1 file changed, 112 insertions(+), 47 deletions(-)

(limited to 'design/xmlformat.tex')

diff --git a/design/xmlformat.tex b/design/xmlformat.tex
index 781bb24..17a80d2 100644
--- a/design/xmlformat.tex
+++ b/design/xmlformat.tex
@@ -1,33 +1,80 @@
 \section{XML Formatet}
+Al kommunikation mellem serveren og klienten (og vice versa)
+foregår ved hjælp af XML.\\
+Dokumenterne skal starte med en header som specificerer hvilken
+XML verison som benyttes, efterfulgt af rodknuden som skal være af
+typen \texttt{pracro}.\\
+\begin{verbatim}
+<?xml version="1.0" encoding="UTF-8"?>
+<pracro version="1.0" cpr="1505050505">
+    .
+    .
+    .
+</pracro>
+\end{verbatim}
+Det er vigtigt at pointere at alt data i xml dokumentet skal være i
+UTF-8 formatering.
+
+\subsection{\texttt{pracro} elementet}
+Pracro elementet bruges som indpakning til hele dokumentet. Den
+identificerer blandt andet dokumentversionen og kan indeholde alle
+typer data forbundet med Pracro systemet.\\
+Pracro elementet har flg. attributter:
+\begin{itemize}
+\item \textit{cpr} - CPR nummeret på den patient som dataene i filen
+  er knyttet til. Det bruges blandt andet ved genfinding af data og 
+  den afsluttende lagring af data.\\
+  Dette felt må ikke undlades.
+\item \textit{version} - Dette felt fortæller hvilken dokument
+  version der er benyttet.\\
+  Denne variabel skal matche den version klienten forventer.\\
+  Dette felt må ikke udelades.
+\end{itemize}
+
+\subsection{Request}
+En request sektion sendt til serveren skal bevirke at serveren inlæser og
+sender den angivne makro til klienten.\\
+Hvis klienten modtager en request sektion skal den blot ignorere den.
+\begin{verbatim}
+<?xml version="1.0" encoding="UTF-8"?>
+<pracro version="1.0" cpr="1505050505">
+  <request makro="visus"/>
+</pracro>
+\end{verbatim}
+
+\subsection{Makro}
+En makro definerer en makro som grafisk viser og eller indsamler data.\\
+En makro sektion sendt til klienten skal bevirke at den beskrevne
+grafisk makro vises på skærmen.\\
+Hvis serveren modtager en makro sektion skal den blot ignorere den.
 Vi starter med et eksempel:
 \begin{verbatim}
 <?xml version="1.0" encoding="UTF-8"?>
-<macro name="test_macro" cpr="1505050505" version="1.0" macro_version="1.0">
-  <window name="mainwindow"
-          caption="This is the mainwindow"
-          width="800"
-          height="600"
-          layout="vbox">
-    <include name="patient"/>
-    <frame name="data_frame" layout="hbox">
-      <label caption="Some field"/>
-      <lineedit name="lineedit1" regexp="[0-9]+"/>
-    </frame>
-    <frame name="bottom_frame" layout="hbox">
-      <spacer />
-      <button caption="Close window" action="abort"/>
-      <button caption="Commit changes" action="commit"/>
-    </frame>
-  </window>
-</macro>
+<pracro version="1.0" cpr="1505050505">
+  <macro name="macro" version="1.0">
+    <window name="mainwindow"
+            caption="This is the mainwindow"
+            width="800"
+            height="600"
+            layout="vbox">
+      <include name="patient"/>
+      <frame name="data_frame" layout="hbox">
+        <label caption="Some field"/>
+        <lineedit name="lineedit1" regexp="[0-9]+"/>
+      </frame>
+      <frame name="bottom_frame" layout="hbox">
+        <spacer />
+        <button caption="Close window" action="abort"/>
+        <button caption="Commit changes" action="commit"/>
+      </frame>
+    </window>
+  </macro>
+</pracro>
 \end{verbatim}
 Eksemplet illustrerer flg. funktionaliteter: Makroen og den
 properties, main vinduet, includes, frames, labels, lineedits og
 knapper.\\
 \\
-Det er vigtigt at pointere at alt data i xml dokumentet skal være i
-UTF-8 formatering.\\
-\\
 Includes foregår serverside, dvs. klienten modtager det sammensatte
 dokument og vil dermed aldrig se \verb|<include ...>| tagget.\\
 \\
@@ -37,8 +84,8 @@ f.eks. LineEdit, Combo eller CheckBox. Ikke-input felter er
 felter som udelukkende bidrager til layout og brugerens forståelse af
 inputfelterne, f.eks. Frame, Image eler Label.
 
-\subsection{\texttt{macro} elementet}
-Makro elementet brges som indpakning til hele makroen. Den
+\subsubsection{\texttt{macro} elementet}
+Makro elementet bruges som indpakning til hele makroen. Den
 identificerer makroen og angiver en række værdier som skal bruges til
 opsætning på klienten.\\
 Makroen har flg. attributter:
@@ -49,21 +96,12 @@ Makroen har flg. attributter:
   underscore, dvs. \verb|[a-z0-9_]+|, hvis det skrives ud som regulært
   udtryk.\\
   Dette felt må ikke undlades.
-\item \textit{cpr} - CPR nummeret på den patient som makroen er
-  knyttet til. Dette CPR nummer skal matche det CPR nummer som
-  klienten har bedt om.\\
-  Bruges blandt andet ved den afsluttende lagring af data.\\
-  Dette felt må ikke undlades.
-\item \textit{version} - Dette felt fortæller hvilken version af XML
-  specifikationen som er benyttet i dokumentet.\\
-  Denne variabel skal matche den version klienten forventer.\\
-  Dette felt må ikke udelades.
-\item \textit{macro\_version} - Dette felt fortæller hvilken version 
+\item \textit{version} - Dette felt fortæller hvilken version 
   den konkrete makro har.\\
   Dette felt må ikke udelades.
 \end{itemize}
 
-\subsection{\texttt{include} elementet}
+\subsubsection{\texttt{include} elementet}
 Include elementet kan kun frekomme serverside, hvor det vil blive
 udvidet med den angivne makro.\\
 Serveren indsætter alle elementer fra (og ikke med) makroens rodvindue
@@ -76,7 +114,7 @@ Include har flg. attributter:
   benyttes værdien ``false''.
 \end{itemize}
 
-\subsection{Generelle GUI attributter}
+\subsubsection{Generelle GUI attributter}
 Alle GUI elementerne i xml dokumentet har flg. attributter:
 \begin{itemize}
 \item \textit{name} - Navnet på elementet. Bruges ved data
@@ -98,7 +136,7 @@ Alle GUI elementerne i xml dokumentet har flg. attributter:
   samt alle dets children rekursivt. Hvis undladt benyttes værdien ``false''.
 \end{itemize}
 
-\subsection{\texttt{window} elementet}
+\subsubsection{\texttt{window} elementet}
 Et vindue benyttes som moder element, til at indsætte andre elementer
 i. Det vil optræde som et vindue på skærmen med kanter, vinduestitel,
 ikon osv.\\
@@ -113,7 +151,7 @@ Et vindue har flg. attributter:
   ``hbox'' eller ``vbox''. Hvis udeladt benyttes et vbox layout.
 \end{itemize}
 
-\subsection{\texttt{frame} elementet}
+\subsubsection{\texttt{frame} elementet}
 En frame benyttes til at indsætte nestede elementer i makroen, såsom
 gruperinger af radio buttons.\\
 En frame har flg. attributter:
@@ -130,11 +168,11 @@ En frame har flg. attributter:
   ``hbox'' eller ``vbox''. Hvis udeladt benyttes et vbox layout.
 \end{itemize}
 
-\subsection{\texttt{spacer} elementet}
+\subsubsection{\texttt{spacer} elementet}
 Et spacer element bruges for at pakke andre elementer i et layout.\\
 En spacer har ingen attributter.
 
-\subsection{\texttt{label} elementet}
+\subsubsection{\texttt{label} elementet}
 En label benyttes til at indsætte beskrivejnde tekst i makroen.\\
 En label har flg. attributter:
 \begin{itemize}
@@ -144,7 +182,7 @@ En label har flg. attributter:
   ``left'', ``right'' eller ``center''. Hvis udeladt benyttes ``left''.
 \end{itemize}
 
-\subsection{\texttt{lineedit} elementet}
+\subsubsection{\texttt{lineedit} elementet}
 En lineedit benyttes til at læse input fra brugeren i kraft tekst.\\
 Lineediten kan have et regulært udtryk tilknyttet, som validerer input
 mens der tastes og ændrer feltets baggrundsfarve afhængig af om feltet
@@ -160,7 +198,7 @@ En lineedit har flg. attributter:
   \verb|http://doc.trolltech.com/4.3/qregexp.html#introduction|
 \end{itemize}
 
-\subsection{\texttt{textedit} elementet}
+\subsubsection{\texttt{textedit} elementet}
 En textedit benyttes ligesom lineedit til at læse input fra brugeren i
 kraft af tekst.\\
 Textediten kan have et regulært udtryk tilknyttet, som validerer input
@@ -177,7 +215,7 @@ En textedit har flg. attributter:
   \verb|http://doc.trolltech.com/4.3/qregexp.html#introduction|
 \end{itemize}
 
-\subsection{\texttt{button} elementet}
+\subsubsection{\texttt{button} elementet}
 En knap kan benyttes til enten at afbryde makroen eller at acceptere
 dens indhold og dermed gemme dataene på serveren.\\
 En knap har flg. attributter:
@@ -191,7 +229,7 @@ En knap har flg. attributter:
   vil en inaktiv knap blive produceret.
 \end{itemize}
 
-\subsection{\texttt{checkbox} elementet}
+\subsubsection{\texttt{checkbox} elementet}
 En checkbox bruges til at aktivere eller deaktivere en given værdi ved
 hjælp af flueben.\\
 En checkbox har flg. attributter:
@@ -203,7 +241,7 @@ En checkbox har flg. attributter:
   ``false''.
 \end{itemize}
 
-\subsection{\texttt{togglebutton} elementet}
+\subsubsection{\texttt{togglebutton} elementet}
 En togglebutton bruges til at aktivere eller deaktivere en given værdi ved
 brug af en trykknap.\\
 En togglebutton har flg. attributter:
@@ -215,7 +253,7 @@ En togglebutton har flg. attributter:
   ``false''.
 \end{itemize}
 
-\subsection{\texttt{radiobutton} elementet}
+\subsubsection{\texttt{radiobutton} elementet}
 En radiobutton bruges til at vælge et element ud af en gruppe.\\
 En radiobutton har flg. attributter:
 \begin{itemize}
@@ -232,8 +270,35 @@ En radiobutton har flg. attributter:
   window).\\
 \end{itemize}
 
-\subsection{\texttt{combobox} elementet}
+\subsubsection{\texttt{combobox} elementet}
 Kommer snart...
 
-\subsection{\texttt{listbox} elementet}
+\subsubsection{\texttt{listbox} elementet}
 Kommer snart...
+
+\subsection{Commit}
+En commit sektion sendt til serveren skal  bevirke at serveren lagrer de
+sendte data i databasen, samt genererer et resumé som kan blive sendt
+tilbage til klienten.\\
+Hvis klienten modtager en commit sektion skal den blot ignorere den.
+\begin{verbatim}
+<?xml version="1.0" encoding="UTF-8"?>
+<pracro version="1.0" cpr="1505050505">
+  <commit macro="visus" version="1.0">
+    <field name="visus_objektiv" value="42"/>
+    <field name="visus_subjektiv" value="42"/>
+  </commit>
+</pracro>
+\end{verbatim}
+
+\subsection{Resumé}
+En resumé sektion sendt til klienten skal bevirke at klienten appender den
+sendte tekst til PC-Praxis journalfilen.\\
+Hvis serveren modtager en resumé sektion skal den blot ignorere den.
+\begin{verbatim}
+<?xml version="1.0" encoding="UTF-8"?>
+<pracro version="1.0" cpr="1505050505">
+  <resume macro="visus" version="1.0">Det objektive synsmål var
+42 dioptri, og det subjektive synsmål var 42 dioptri.</resume>
+</pracro>
+\end{verbatim}
-- 
cgit v1.2.3

