summaryrefslogtreecommitdiff
path: root/design/xmlformat.tex
diff options
context:
space:
mode:
Diffstat (limited to 'design/xmlformat.tex')
-rw-r--r--design/xmlformat.tex159
1 files changed, 112 insertions, 47 deletions
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}