Index: /adl/trunk/openEHR-EHR-OBSERVATION.blood_pressure.v1.adl
===================================================================
--- /adl/trunk/openEHR-EHR-OBSERVATION.blood_pressure.v1.adl	(revision 2)
+++ /adl/trunk/openEHR-EHR-OBSERVATION.blood_pressure.v1.adl	(revision 2)
@@ -0,0 +1,673 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-OBSERVATION.blood_pressure.v1
+
+concept
+	[at0000]	-- Blood pressure
+language
+	original_language = <[ISO_639-1::en]>
+	translations = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			author = <
+				["name"] = <"Sebastian Garde, Jasmin Buck">
+	        	["organisation"] = <"Central Queensland University, University of Heidelberg">
+			>
+		>
+	>
+description
+	original_author = <
+		["name"] = <"Sam Heard">
+		["organisation"] = <"Ocean Informatics">
+		["date"] = <"22/03/2006">
+		["email"] = <"sam.heard@oceaninformatics.biz">
+	>
+	details = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			purpose = <"Dient der Dokumentation des systemischen Blutdrucks einer Person. Die Messung zeichnet den systolischen und diastolischen Blutdruck auf geeignete Art und Weise auf, sodass das Resultat der Messung als charakteristisch für den tatsächlichen systemischen Blutdruck angesehen werden kann.">
+			use = <"Alle Blutdruckmessungen werden unter Zuhilfenahme dieses Archetypen dokumentiert. Der Archetyp beinhaltet ein umfassendes Status-Modell z.B. bei Durchführung von Belastungs-EKGs und Kipptischuntersuchungen.">
+			misuse = <"Nicht zu Benutzen zur Dokumentation des intravaskulären Drucks.">
+		>
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"To record the systemic blood pressure of a person. The measurement records the systolic and the diastolic pressure by some means suitable for the result to be seen as a surrogate for the general and systemic blood pressure.">
+			use = <"All blood pressure measurements are recorded using this archetype. There is a rich state model for use with exercise ECGs and Tilt Table measurements.">
+			keywords = <"observations", "blood pressure", "measurement">
+			misuse = <"Not to be used for intravascular pressure.">
+		>
+	>
+	lifecycle_state = <"AuthorDraft">
+	other_contributors = <>
+
+definition
+	OBSERVATION[at0000] matches {	-- Blood pressure
+		data matches {
+			HISTORY[at0001] matches {	-- history
+				events cardinality matches {1..*; unordered} matches {
+					EVENT[at0006] occurrences matches {0..*} matches {	-- any event
+						data matches {
+							ITEM_LIST[at0003] matches {	-- blood pressure
+								items cardinality matches {0..*; ordered} matches {
+									ELEMENT[at0004] occurrences matches {0..1} matches {	-- systolic
+										value matches {
+											C_DV_QUANTITY <
+												property = <[openehr::125]>
+												list = <
+													["1"] = <
+														units = <"mm[Hg]">
+														magnitude = <|0.0..<1000.0|>
+														precision = <|0|>
+													>
+												>
+											>
+										}
+									}
+									ELEMENT[at0005] occurrences matches {0..1} matches {	-- diastolic
+										value matches {
+											C_DV_QUANTITY <
+												property = <[openehr::125]>
+												list = <
+													["1"] = <
+														units = <"mm[Hg]">
+														magnitude = <|0.0..<1000.0|>
+														precision = <|0|>
+													>
+												>
+											>
+										}
+									}
+									ELEMENT[at1006] occurrences matches {0..1} matches {	-- mean arterial pressure
+										value matches {
+											C_DV_QUANTITY <
+												property = <[openehr::125]>
+												list = <
+													["1"] = <
+														units = <"mm[Hg]">
+														magnitude = <|0.0..750.0|>
+														precision = <|1|>
+													>
+												>
+											>
+										}
+									}
+									ELEMENT[at1007] occurrences matches {0..1} matches {	-- pulse pressure
+										value matches {
+											C_DV_QUANTITY <
+												property = <[openehr::125]>
+												list = <
+													["1"] = <
+														units = <"mm[Hg]">
+														magnitude = <|0.0..750.0|>
+														precision = <|0|>
+													>
+												>
+											>
+										}
+									}
+									ELEMENT[at0033] occurrences matches {0..1} matches {	-- Comment
+										value matches {
+											DV_TEXT matches {*}
+										}
+									}
+								}
+							}
+						}
+						state matches {
+							ITEM_LIST[at0007] matches {	-- state structure
+								items cardinality matches {0..*; ordered} matches {
+									ELEMENT[at0008] occurrences matches {0..1} matches {	-- Position
+										value matches {
+											DV_CODED_TEXT matches {
+												defining_code matches {
+													[local::
+													at1000, 	-- Standing
+													at1001, 	-- Sitting
+													at1002, 	-- Reclining
+													at1003; 	-- Lying
+													at1001]	-- assumed value
+												}
+											}
+										}
+									}
+									ELEMENT[at0009] occurrences matches {0..1} matches {	-- Exertion level
+										value matches {
+											C_DV_QUANTITY <
+												property = <[openehr::130]>
+												list = <
+													["1"] = <
+														units = <"J/min">
+														magnitude = <|0.0..1000.0|>
+													>
+												>
+												assumed_value = <
+													magnitude = <0.0>
+													units = <"J/min">
+													precision = <-1>
+												>
+											>
+										}
+									}
+									ELEMENT[at0010] occurrences matches {0..1} matches {	-- Exercise
+										value matches {
+											DV_CODED_TEXT matches {
+												defining_code matches {
+													[local::
+													at0022, 	-- At rest
+													at0023, 	-- Post-exercise
+													at0024; 	-- During exercise
+													at0022]	-- assumed value
+												}
+											}
+										}
+									}
+									ELEMENT[at1005] occurrences matches {0..1} matches {	-- Tilt
+										value matches {
+											C_DV_QUANTITY <
+												property = <[openehr::497]>
+												list = <
+													["1"] = <
+														units = <"°">
+														magnitude = <|-90.0..90.0|>
+														precision = <|0|>
+													>
+												>
+												assumed_value = <
+													magnitude = <0.0>
+													units = <"°">
+													precision = <0>
+												>
+											>
+										}
+									}
+								}
+							}
+						}
+					}
+					POINT_EVENT[at0002] occurrences matches {0..1} matches {	-- baseline reading
+						offset matches {
+							DV_DURATION matches {
+								value matches {|PT0S|}
+							}
+						}
+						data matches {
+							use_node ITEM_LIST /data[at0001]/events[at0006]/data[at0003]
+						}
+						state matches {
+							use_node ITEM_LIST /data[at0001]/events[at0006]/state[at0007]
+						}
+					}
+					POINT_EVENT[at0029] occurrences matches {0..1} matches {	-- 5 minute reading
+						offset matches {
+							DV_DURATION matches {
+								value matches {|PT5M|}
+							}
+						}
+						data matches {
+							use_node ITEM_LIST /data[at0001]/events[at0006]/data[at0003]
+						}
+						state matches {
+							use_node ITEM_LIST /data[at0001]/events[at0006]/state[at0007]
+						}
+					}
+					POINT_EVENT[at0030] occurrences matches {0..1} matches {	-- 10 minute reading
+						offset matches {
+							DV_DURATION matches {
+								value matches {|PT10M|}
+							}
+						}
+						data matches {
+							use_node ITEM_LIST /data[at0001]/events[at0006]/data[at0003]
+						}
+						state matches {
+							use_node ITEM_LIST /data[at0001]/events[at0006]/state[at0007]
+						}
+					}
+					INTERVAL_EVENT[at0031] occurrences matches {0..*} matches {	-- Postural change
+						math_function matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {[openehr::147]}
+							}
+						}
+						data matches {
+							use_node ITEM_LIST /data[at0001]/events[at0006]/data[at0003]
+						}
+						state matches {
+							use_node ITEM_LIST /data[at0001]/events[at0006]/state[at0007]
+						}
+					}
+					INTERVAL_EVENT[at1004] occurrences matches {0..*} matches {	-- Paradox
+						math_function matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {[openehr::149]}
+							}
+						}
+						data matches {
+							use_node ITEM_LIST /data[at0001]/events[at0006]/data[at0003]
+						}
+						state matches {
+							use_node ITEM_LIST /data[at0001]/events[at0006]/state[at0007]
+						}
+					}
+				}
+			}
+		}
+		protocol matches {
+			ITEM_LIST[at0011] matches {	-- list structure
+				items cardinality matches {0..*; ordered} matches {
+					ELEMENT[at0013] occurrences matches {0..1} matches {	-- Cuff size
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {
+									[local::
+									at0015, 	-- Adult
+									at0016, 	-- Wide adult
+									at0017, 	-- Paediatric
+									at1008, 	-- Thigh
+									at1009]	-- Neonatal
+								}
+							}
+						}
+					}
+					ELEMENT[at0012] occurrences matches {0..1} matches {	-- Instrument
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+					ELEMENT[at0014] occurrences matches {0..1} matches {	-- Location of measurement
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {
+									[local::
+									at0025, 	-- Right arm
+									at0026, 	-- Left arm
+									at0027, 	-- Right leg
+									at0028, 	-- Left leg
+									at0032]	-- Intra-arterial
+								}
+							}
+						}
+					}
+					ELEMENT[at1010] occurrences matches {0..1} matches {	-- Korotkoff sounds
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {
+									[local::
+									at1011, 	-- Fourth sound
+									at1012]	-- Fifth sound
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	terminologies_available = <"SNOMED-CT", ...>
+	term_definitions = <
+		["de"] = <
+			items = <
+				["at0000"] = <
+					description = <"Die Messung des systemischen arteriellen Blutdrucks, die als geeignet angesehen wird, den tatsächlichen systemischen Blutdruck zu repräsentieren.">
+					text = <"Blutdruckmessung">
+				>
+				["at0001"] = <
+					description = <"Historie">
+					text = <"Historie">
+				>
+				["at0002"] = <
+					description = <"Basismessung">
+					text = <"Basismessung">
+				>
+				["at0003"] = <
+					description = <"*@ internal @(en)">
+					text = <"Blutdruck">
+				>
+				["at0004"] = <
+					description = <"Der höchste arterielle Blutdruck eines Zyklus - gemessen in der systolischen oder Kontraktionsphase des Herzens.">
+					text = <"systolisch">
+				>
+				["at0005"] = <
+					description = <"Der minimale systemische arterielle Blutdruck eines Zyklus - gemessen in der diastolischen oder Entspannungsphase des Herzens.">
+					text = <"diastolisch">
+				>
+				["at0006"] = <
+					description = <"anderes unbestimmtes Ereignis">
+					text = <"unbestimmtes Ereignis">
+				>
+				["at0007"] = <
+					description = <"*@ internal @(en)">
+					text = <"*state structure(en)">
+				>
+				["at0008"] = <
+					description = <"Die Position des Patienten zum Zeitpunkt der Blutdruckmessung">
+					text = <"Position">
+				>
+				["at0009"] = <
+					description = <"Das Anstrengungsniveau zum Zeitpunkt der Messung">
+					text = <"Anstrengungsniveau">
+				>
+				["at0010"] = <
+					description = <"Die Beschreibung, ob und wann eine Leibesübung durchgeführt wurde bzw. eine körperliche Belastung bestand.">
+					text = <"körperliche Belastung">
+				>
+				["at0011"] = <
+					description = <"Listenstruktur">
+					text = <"Listenstruktur">
+				>
+				["at0012"] = <
+					description = <"Das Instrument, das zur Blutdruckmessung benutzt wird">
+					text = <"Instrument">
+				>
+				["at0013"] = <
+					description = <"Die Größe der Manschette des benutzten Sphygmomanometers">
+					text = <"Manschettengröße">
+				>
+				["at0014"] = <
+					description = <"Ort der Blutdruckmessung">
+					text = <"Ort der Messung">
+				>
+				["at0015"] = <
+					description = <"Eine normale Manschette für Erwachsene">
+					text = <"Erwachsener">
+				>
+				["at0016"] = <
+					description = <"Eine Manschette für Erwachsene mit dickeren Armen">
+					text = <"Erwachsener (weit)">
+				>
+				["at0017"] = <
+					description = <"Eine Manschette geeignet für ein Kind mit dünnen Armen">
+					text = <"Pädiatrisch">
+				>
+				["at0022"] = <
+					description = <"Die Person ist in Ruhe und nicht in der Erholungsphase von einer Anstrengung">
+					text = <"In Ruhe">
+				>
+				["at0023"] = <
+					description = <"Die Messung wird unmittelbar nach einer Leibesübung/körperlicher Belastung durchgeführt">
+					text = <"Nach Leibesübung/körperlicher Belastung">
+				>
+				["at0024"] = <
+					description = <"Die Messung wird während einer Leibesübung/körperlicher Belastung durchgeführt">
+					text = <"Während Leibesübung/körperlicher Belastung">
+				>
+				["at0025"] = <
+					description = <"Der rechte Arm der Person">
+					text = <"Rechter Arm">
+				>
+				["at0026"] = <
+					description = <"Der linke Arm der Person">
+					text = <"Linker Arm">
+				>
+				["at0027"] = <
+					description = <"Rechtes Bein des Patienten">
+					text = <"Rechtes Bein">
+				>
+				["at0028"] = <
+					description = <"Linkes Bein des Patienten">
+					text = <"Linkes Bein">
+				>
+				["at0029"] = <
+					description = <"Blutdruckmessung nach 5 Minuten Ruhepause">
+					text = <"5-Minuten-Messung">
+				>
+				["at0030"] = <
+					description = <"Blutdruckmessung nach 10 Minuten Ruhepause">
+					text = <"10-Minuten-Messung">
+				>
+				["at0031"] = <
+					description = <"Die Differenz zwischen stehendem und sitzendem/liegendem Blutdruck">
+					text = <"posturale Änderung">
+				>
+				["at0032"] = <
+					description = <"Blutdruckmessung durch intra-arterielle (invasive) Messung">
+					text = <"Intra-arteriell">
+				>
+				["at0033"] = <
+					description = <"Kommentar zur Blutdruckmessung">
+					text = <"Kommentar">
+				>
+				["at1000"] = <
+					description = <"Stehend zum Zeitpunkt der Blutdruckmessung">
+					text = <"Stehend">
+				>
+				["at1001"] = <
+					description = <"Sitzend zum Zeitpunkt der Blutdruckmessung">
+					text = <"Sitzend">
+				>
+				["at1002"] = <
+					description = <"Patient 45 Grad zurückgelehnt zum Zeitpunkt der Blutdruckmessung">
+					text = <"Zurückgelehnt">
+				>
+				["at1003"] = <
+					description = <"Patient flach liegend zum Zeitpunkt der Blutdruckmessung">
+					text = <"Liegend">
+				>
+				["at1004"] = <
+					description = <"Variation des Blutdrucks bei Atmung">
+					text = <"Paradox">
+				>
+				["at1005"] = <
+					description = <"Die Neigung der Oberfläche auf der der Patient liegt (Kipptischuntersuchungen)">
+					text = <"Neigung">
+				>
+				["at1006"] = <
+					description = <"Der mittlere arterielle Druck, abgekürzt MAD oder MAP (von englisch: mean arterial pressure), liegt zwischen dem systolischen und dem diastolischen Blutdruckwert. Er kann genau berechnet werden, indem die Fläche unter der arteriellen Druckkurve gemittelt wird. Kann auch nach folgender Formel berechnet werden: (2XSBD + DBD) dividiert durch 3.">
+					text = <"mittlerer arterieller Druck">
+				>
+				["at1007"] = <
+					description = <"Der Abstand zwischen dem systolischen und dem diastolischen Blutdruckwert. Beschreibt die Druckwelle, die mit jedem Herzschlag durch das Blutgefäßsystem läuft.">
+					text = <"Pulsdruck">
+				>
+				["at1008"] = <
+					description = <"Eine Manschette für den Oberschenkel eines Erwachsenen">
+					text = <"Oberschenkel">
+				>
+				["at1009"] = <
+					description = <"Eine Manschette benutzt für Neugeborene">
+					text = <"Neonatal">
+				>
+			    ["at1010"] = <
+					description = <"Korotkoff Geräusch, das zur Betimmung des diastolischen Blutdrucks benuzt wurde">
+					text = <"Korotkoff Geräusche">
+				>
+				["at1011"] = <
+					description = <"*">
+					text = <"Viertes Geräusch">
+				>
+				["at1012"] = <
+					description = <"*">
+					text = <"Fünftes Geräusch">
+				>
+			>
+		>
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"the measurement by any means (invasive or non-invasive) of systemic arterial blood pressure which is deemed to represent the actual systemic blood pressure">
+					text = <"Blood pressure">
+				>
+				["at0001"] = <
+					description = <"history Structural node">
+					text = <"history">
+				>
+				["at0002"] = <
+					description = <"baseline event in event history">
+					text = <"baseline reading">
+				>
+				["at0003"] = <
+					description = <"@ internal @">
+					text = <"blood pressure">
+				>
+				["at0004"] = <
+					description = <"the peak systemic arterial blood pressure over one cycle - measured in systolic or contraction phase of the heart cycle">
+					text = <"systolic">
+				>
+				["at0005"] = <
+					description = <"the minimum systemic arterial blood pressure over one cycle - measured in the diastolic or relaxation phase">
+					text = <"diastolic">
+				>
+				["at0006"] = <
+					description = <"other event in event history">
+					text = <"any event">
+				>
+				["at0007"] = <
+					description = <"@ internal @">
+					text = <"state structure">
+				>
+				["at0008"] = <
+					description = <"The position of the patient at the time of measuring blood pressure">
+					text = <"Position">
+				>
+				["at0009"] = <
+					description = <"The level of exertion at the time of taking the measurement">
+					text = <"Exertion level">
+				>
+				["at0010"] = <
+					description = <"The classification of the exercise level">
+					text = <"Exercise">
+				>
+				["at0011"] = <
+					description = <"list structure">
+					text = <"list structure">
+				>
+				["at0012"] = <
+					description = <"the instrument used to measure the blood pressure">
+					text = <"Instrument">
+				>
+				["at0013"] = <
+					description = <"the size of the cuff if a sphygmomanometer is used">
+					text = <"Cuff size">
+				>
+				["at0014"] = <
+					description = <"The site of the measurement of the blood pressure">
+					text = <"Location of measurement">
+				>
+				["at0015"] = <
+					description = <"A cuff that is standard for an adult">
+					text = <"Adult">
+				>
+				["at0016"] = <
+					description = <"A cuff for adults with larger arms">
+					text = <"Wide adult">
+				>
+				["at0017"] = <
+					description = <"A cuff that is appropriate for a child or thin arm">
+					text = <"Paediatric">
+				>
+				["at0022"] = <
+					description = <"The person is at rest and not in the recovery phase from exersion">
+					text = <"At rest">
+				>
+				["at0023"] = <
+					description = <"Measurement is taken immediately after exercise">
+					text = <"Post-exercise">
+				>
+				["at0024"] = <
+					description = <"The measurement is taken during exercise">
+					text = <"During exercise">
+				>
+				["at0025"] = <
+					description = <"The right arm of the person">
+					text = <"Right arm">
+				>
+				["at0026"] = <
+					description = <"The left arm of the person">
+					text = <"Left arm">
+				>
+				["at0027"] = <
+					description = <"The right leg of the patient">
+					text = <"Right leg">
+				>
+				["at0028"] = <
+					description = <"The left leg of the person">
+					text = <"Left leg">
+				>
+				["at0029"] = <
+					description = <"Blood pressure reading after 5 minutes rest">
+					text = <"5 minute reading">
+				>
+				["at0030"] = <
+					description = <"Blood pressure reading after 10 minutes rest">
+					text = <"10 minute reading">
+				>
+				["at0031"] = <
+					description = <"The difference between standing and sitting/lying blood pressure">
+					text = <"Postural change">
+				>
+				["at0032"] = <
+					description = <"Blood pressure monitored via an intra-arterial line">
+					text = <"Intra-arterial">
+				>
+				["at0033"] = <
+					description = <"Comment on blood pressure reading">
+					text = <"Comment">
+				>
+				["at1000"] = <
+					description = <"Standing at the time of blood pressure measurement">
+					text = <"Standing">
+				>
+				["at1001"] = <
+					description = <"Sitting on bed or chair at the time of blood pressure measurement">
+					text = <"Sitting">
+				>
+				["at1002"] = <
+					description = <"Person reclining at 45 degrees at the time of blood pressure measurement">
+					text = <"Reclining">
+				>
+				["at1003"] = <
+					description = <"Patient lying flat at the time of blood pressure measurement">
+					text = <"Lying">
+				>
+				["at1004"] = <
+					description = <"Variation in blood pressure with respiration">
+					text = <"Paradox">
+				>
+				["at1005"] = <
+					description = <"The tilt of the surface on which the person is lying">
+					text = <"Tilt">
+				>
+				["at1006"] = <
+					description = <"(MAP) The average arterial pressure that occurs over the entire course of the heart contraction and relaxation cycle - calculated by (2XSBP + DBP) divided by 3.">
+					text = <"mean arterial pressure">
+				>
+				["at1007"] = <
+					description = <"The variation in pressure over one contraction cycle">
+					text = <"pulse pressure">
+				>
+				["at1008"] = <
+					description = <"A cuff used for an adult thigh">
+					text = <"Thigh">
+				>
+				["at1009"] = <
+					description = <"A cuff used for a new born">
+					text = <"Neonatal">
+				>
+				["at1010"] = <
+					description = <"Record which Korotkoff sound is used for determining Diastolic pressure">
+					text = <"Korotkoff sounds">
+				>
+				["at1011"] = <
+					description = <"*">
+					text = <"Fourth sound">
+				>
+				["at1012"] = <
+					description = <"*">
+					text = <"Fifth sound">
+				>
+			>
+		>
+	>
+	term_binding = <
+		["SNOMED-CT"] = <
+			items = <
+				["at0000"] = <[SNOMED-CT(2003)::163020007]>
+				["at0003"] = <[SNOMED-CT(2003)::364090009]>
+				["at0004"] = <[SNOMED-CT(2003)::163030003]>
+				["at0005"] = <[SNOMED-CT(2003)::163031004]>
+				["at0012"] = <[SNOMED-CT(2003)::57134006]>
+				["at0013"] = <[SNOMED-CT(2003)::246153002]>
+			>
+		>
+	>
Index: /haskell/trunk/ADLParser.hs
===================================================================
--- /haskell/trunk/ADLParser.hs	(revision 2)
+++ /haskell/trunk/ADLParser.hs	(revision 2)
@@ -0,0 +1,54 @@
+module ADLParser where
+
+import Text.ParserCombinators.Parsec
+import Text.ParserCombinators.Parsec.Expr
+import Text.ParserCombinators.Parsec.Char
+import Archetype
+
+adl :: Parser Archetype
+adl = many block
+    where
+      block = do version <- try(adlVersion)
+                 return version
+          <|> do name <- try(adlName)
+                 return name
+          <|> do concept <- try(adlConcept)
+                 return concept
+          <|> do language <- try(adlLanguage)
+                 return language
+          <|> do description <- try(adlDescription)
+                 return description
+          <|> do definition <- try(adlDefinition)
+                 return definition
+          <|> do ontology <- try(adlOntology)
+                 return ontology
+
+
+adlVersion :: Parser String
+adlVersion = do dec1 <- string "archetype (adl_version="
+                ver <- many anyChar
+                end <- char ')'
+                return ver
+
+adlName :: Parser String
+adlName = do spaces
+             name <- many anyChar
+             spaces
+             return name
+
+adlConcept :: Parser Concept
+adlConcept = do spaces
+                head <- string "concept"
+                spaces
+                c1 <- char '['
+                at <- many anyChar
+                c2 <- char ']'
+                spaces
+                c3 <- string "--"
+                desc <- many anyChar
+                end <- char '\r'
+                
+                return Concept {at, desc]
+
+adlLanguage :: Parser Language
+
Index: /haskell/trunk/Archetype.hs
===================================================================
--- /haskell/trunk/Archetype.hs	(revision 2)
+++ /haskell/trunk/Archetype.hs	(revision 2)
@@ -0,0 +1,36 @@
+module Archetype where
+
+import List
+import Data.Tree
+
+type V_STRING = String
+type V_IDENTIFIER = String
+type V_LOCAL_TERM_CODES = String
+
+data Archetype = Archetype {
+      arch_identification :: ArchIdentification
+      arch_specialisation :: ArchSpecialisation
+      arch_concept :: ArchConcept
+      arch_language :: ArchLanguage
+      arch_description :: ArchDescription
+      arch_definition :: ArchDefinition
+      arch_invariant :: ArchInvariant
+      arch_ontology :: ArchOntology
+}
+               
+ArchIdentification :: ArchIdentification {
+      code :: String, desc :: String}
+
+data Language = Langage {
+      orig  :: String, translation :: [Translation]}
+
+data Translation = Translation {
+      symbol :: String, lang :: String, author :: Author }
+data Author = Author {
+      name :: String, organization :: String, 
+      date :: String, email :: String }
+data Description = Description {
+      orig :: Author, details :: [Details], 
+
+
+
Index: /haskell/trunk/FileUtils.hs
===================================================================
--- /haskell/trunk/FileUtils.hs	(revision 2)
+++ /haskell/trunk/FileUtils.hs	(revision 2)
@@ -0,0 +1,5 @@
+import System.Environment
+
+readADL :: String -> String
+readADL file = do cs <- readFile (file ++ ".adl")
+                  return cs
