diff options
Diffstat (limited to 'design/xmlformat.tex')
-rw-r--r-- | design/xmlformat.tex | 159 |
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} |