diff options
| -rw-r--r-- | design/database.fig | 85 | ||||
| -rw-r--r-- | design/database.tex | 25 | ||||
| -rw-r--r-- | design/preamble.tex | 1 | ||||
| -rw-r--r-- | design/xmlformat.tex | 159 | 
4 files changed, 223 insertions, 47 deletions
diff --git a/design/database.fig b/design/database.fig new file mode 100644 index 0000000..f158ad6 --- /dev/null +++ b/design/database.fig @@ -0,0 +1,85 @@ +#FIG 3.2  Produced by xfig version 3.2.5 +Landscape +Center +Inches +Letter   +100.00 +Single +-2 +1200 2 +2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2 +	 3300 5250 3300 5475 +2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2 +	 5250 5250 5250 5475 +2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2 +	 5100 4875 5100 5025 +2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2 +	 4050 4875 4050 5025 +2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2 +	 4050 3450 4050 3600 +2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2 +	 5100 3450 5100 3600 +2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2 +	 5250 8925 5250 9150 +2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2 +	 5100 8550 5100 8700 +2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2 +	 4050 8550 4050 8700 +2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2 +	 4050 7125 4050 7275 +2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2 +	 5100 7125 5100 7275 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 +	 2850 2025 5700 2025 5700 5700 2850 5700 2850 2025 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 +	 3300 2400 5250 2400 5250 3825 3300 3825 3300 2400 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 +	 4050 2700 5100 2700 5100 3075 4050 3075 4050 2700 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 +	 4050 3075 5100 3075 5100 3450 4050 3450 4050 3075 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 +	 3300 3825 5250 3825 5250 5250 3300 5250 3300 3825 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 +	 4050 4125 5100 4125 5100 4500 4050 4500 4050 4125 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 +	 4050 4500 5100 4500 5100 4875 4050 4875 4050 4500 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 +	 2850 5700 5700 5700 5700 9375 2850 9375 2850 5700 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 +	 3300 6075 5250 6075 5250 7500 3300 7500 3300 6075 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 +	 4050 6375 5100 6375 5100 6750 4050 6750 4050 6375 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 +	 4050 6750 5100 6750 5100 7125 4050 7125 4050 6750 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 +	 3300 7500 5250 7500 5250 8925 3300 8925 3300 7500 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 +	 4050 7800 5100 7800 5100 8175 4050 8175 4050 7800 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 +	 4050 8175 5100 8175 5100 8550 4050 8550 4050 8175 +2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2 +	 5700 9375 5700 9675 +2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2 +	 2850 9375 2850 9675 +2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2 +	 3300 8925 3300 9150 +4 0 0 50 -1 0 12 0.0000 4 150 405 3000 2325 CPR\001 +4 0 0 50 -1 0 12 0.0000 4 150 1035 3450 2625 Transaktion\001 +4 0 0 50 -1 0 12 0.0000 4 150 1035 3450 4050 Transaktion\001 +4 0 0 50 -1 0 12 0.0000 4 150 405 3000 6000 CPR\001 +4 0 0 50 -1 0 12 0.0000 4 150 1035 3450 6300 Transaktion\001 +4 0 0 50 -1 0 12 0.0000 4 150 1035 3450 7725 Transaktion\001 +4 0 0 50 -1 0 12 0.0000 4 150 420 4125 2925 Field\001 +4 0 0 50 -1 0 12 0.0000 4 150 420 4125 3300 Field\001 +4 0 0 50 -1 0 12 0.0000 4 150 420 4125 4350 Field\001 +4 0 0 50 -1 0 12 0.0000 4 150 420 4125 4725 Field\001 +4 0 0 50 -1 0 12 0.0000 4 150 420 4125 6600 Field\001 +4 0 0 50 -1 0 12 0.0000 4 150 420 4125 6975 Field\001 +4 0 0 50 -1 0 12 0.0000 4 150 420 4125 8025 Field\001 +4 0 0 50 -1 0 12 0.0000 4 150 420 4125 8400 Field\001 +4 0 0 50 -1 0 12 0.0000 4 150 660 6000 2325 Table1:\001 +4 0 0 50 -1 0 12 0.0000 4 150 660 6000 3090 Table2:\001 +4 0 0 50 -1 0 12 0.0000 4 195 3015 6000 3345 (TransactionID, Fieldname, Value)\001 +4 0 0 50 -1 0 12 0.0000 4 150 660 6000 3855 Table3:\001 +4 0 0 50 -1 0 12 0.0000 4 195 4980 6000 2580 (CPR, TransaktionID, Makro, Version, Timestamp, User)\001 +4 0 0 50 -1 0 12 0.0000 4 195 1935 6000 4110 (Fieldname, Type, ... )\001 diff --git a/design/database.tex b/design/database.tex new file mode 100644 index 0000000..0375202 --- /dev/null +++ b/design/database.tex @@ -0,0 +1,25 @@ +\section{Database layout} +\begin{figure} +\begin{center} +\includegraphics[width=120mm]{database.eps}\\ +\end{center} +\label{database} +\caption{Databasens indhold og et foreslået tabel design.} +\end{figure} +\begin{verbatim} +Database designformål: +- Hurtig skrivning af en transaktion. +- Hurtig genfinding af en tidligere skrevet transaktion. +- Robusthed overfor ændringer i makroers layout. +- Gode muligheder for at lave statistik udtræk. + +Estimat af datastørrelser: +200 patienter pr. dag. +10 fields pr. patient. +---- +2000 fields + 200 headere = 2200 entries i databasen pr. dag. + +Hvis en entry i gennemsnit består af 200 tegn er det +2200 * 200 = 440000 bytes/dag. +eller 153.16Mbytes/år +\end{verbatim} diff --git a/design/preamble.tex b/design/preamble.tex index b916ab7..0ac00c4 100644 --- a/design/preamble.tex +++ b/design/preamble.tex @@ -134,6 +134,7 @@  \include{xmlformat}  \include{transmission}  \include{client} +\include{database}  \end{document}  %********************************************* 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}  | 
