summaryrefslogtreecommitdiff
path: root/design
diff options
context:
space:
mode:
Diffstat (limited to 'design')
-rw-r--r--design/database.fig85
-rw-r--r--design/database.tex25
-rw-r--r--design/preamble.tex1
-rw-r--r--design/xmlformat.tex159
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}