Ein Argument gegen die Benutzung funktionaler Sprachen in einem kommerziellen Produkt
ist oft, dass es für solche „exotischen“ Sprachen nicht genügend Bibliotheken gäbe. Für
ausgewachsene funktionale Sprachen wie Scala oder Haskell zieht dieses Argument
längst nicht mehr, denn es gibt für beide Sprache eine Menge qualitativ hochwertiger
Bibliotheken und Komponenten. Und sollte es doch mal vorkommen dass für ein etwas
ungewöhnlicheres Problem keine Unterstützung durch eine Bibliothek vorhanden ist,
kann man meistens in kurzer Zeit Abhilfe schaffen und sich selbst eine kleine Bibliothek
zusammenstellen.
Heute wollen wir das anhand eines Parsers für HL7-Nachrichten durchexerzieren.
HL7 ist ein weitverbreiteter Standard zum Austausch
medizinischer Daten. Wir setzen diesen Standard bei uns in der Firma
oft im Rahmen unseres Produktes Checkped MED ein, über das
wir schon an anderer Stelle in diesem
Blog berichtet haben. Da der Checkpad-Server hauptsächlich in Haskell
geschrieben ist, benötigen wir in Haskell natürlich auch einen Parser
für HL7-Nachrichten. Da es einen solchen nicht fertig erhältlich gibt, haben wir
in kurzerhand selbstgeschrieben. Sie werden in diesem Artikel sehen,
dass wir eine performante und robuste Implementierung in weniger als 180 Zeilen Haskell-Code
erstellen können, und diese Zeilen enthalten auch die Datentypdefinition für
die HL7-Nachrichten sowie Tests. Der Code des eigentlichen Parsers ist weniger
als 50 Zeilen lang.
Weiterlesen...