Blog
Empowering your data with open source
- Filter Posts
Flask vs. Django vs. Pyramid vs. Plone
Python Web Frameworks im Vergleich
Wir entwickeln Web Applikationen mit unterschiedlichen Python Frameworks. Unterschiedliche Anforderungen verlangen nach unterschiedlichen Werkzeugen.
Einen direkten Vergleich zwischen den Python Web Frameworks Flask, Django, Pyramid und Plone gibt es hier: http://blog.stacktrace.ch/post/49178654214
WebCronMon - Web Monitor
Shows websites monitored on Webcron.org in kiosk mode.
At seantis we use Webcron.org to monitor our sites. For our customers, as well as for our office monitor screen, we wanted a simple auto-refreshing page that shows the status of our sites at a glance. We therefore wrote this small Flask application looking like this:

The monitor only shows the bare minimum of information to keep things simple:
- list monitors by group
- link the monitors to the actual website
- show the current state (online / offline since)
- show the uptime of the last 30 days
The site will update the list every 60 seconds by default, unless configured otherwise or unless the timer on the upper right is toggled with a mouse-click.
GitHub project: https://github.com/seantis/webcronmon
Über das Problem sprechen statt über die Lösung!
Wir alle neigen dazu, voreilig über Lösungen zu sprechen, anstatt zuerst das zugrundeliegende Problem gründlich zu analysieren.
Die perzipierte Lösung ohne ausführlichere Beschreibung des zugrunde liegenden Problems (im Sinne von zu lösender Aufgabe) kann für das Projekt zum Risiko werden. Das Denken in vorgespurten Lösungskategorien verengt vorzeitig den Möglichkeitsraum für die zu entwickelnde Lösung. Gut möglich, dass es passendere und bessere Lösungen gibt.
Das Nachdenken über das Problem an sich darf nicht übersprungen werden.
1) Beschreibung des Problems
Ein paar wenige Sätze zur Beschreibung des Problems. Sätze und nicht Bullet Points! Also auch kein Power Point bitte.
2) Ursachen des Problems
Verschiedene Erklärungsversuche (Arbeitshypothesen) sollen aufgestellt werden.
3) Quantifizierung des Problems
Wie gross ist das Problem relativ gesehen: haben 5 von 1'000 Benutzern ein Problem oder sind es 500 von 1'000? Die Relationen abschätzen zu können hilft.
4) Abgrenzungen (Scope)
Es soll beschrieben werden, was nicht Teil des Problems ist. Es mag paradox erscheinen, aber das explizite Benennen von Elementen, die nicht Teil des Problems sind, macht durchaus Sinn.
5) Begrifflichkeiten klären
Für Personen mit unterschiedlichem Hintergrund darf nicht davon ausgegangen werden, dass sie unter einem verwendeten Begriff das Gleiche verstehen.
6) Quick Fix
Gibt es eine einfache Möglichkeit, das Problem rasch aus der Welt zu schaffen? Können bestehende Prozesse so angepasst werden, dass sich das Problem mit kleinem Aufwand - so genannt "administrativ" - bewältigen lässt.
Die Schritte 2)-6) kann man sich auch sparen. Sie sollen lediglich illustrieren, dass die gründliche Analyse eines Problems mehr bringt, als die voreilige Zuflucht zu eine bekannte Lösung.
Probleme zu finden ist schwierig genug
Warum haben viele Leute die Tendenz voreilig über die Lösung sprechen zu wollen, statt zuerst gründlich über das zugrundeliegende Problem nachzudenken?
Es wird zu wenig anerkannt, dass allein schon das Finden und Beschreiben von Problemen wertvoll und keinesfalls trivial ist!
[..] I’ve learned one of the biggest mistakes “nontechnical” people make when communicating to great hackers about product is that we try and tell them the solutions before we ever tell them the problem. It’s like we don’t trust them to be able to think through and reach their own solution. When in reality their solution is usually 10-100x better than ours because they are the ones building it!!
I started thinking about this and realized maybe its because nontechnical people don’t realize the value they’ve created just by finding the problem. Truly, just being able to find and articulate the problem is really valuable when building a product.
http://katgleason.tumblr.com/post/47257463324/talk-about-the-problem-not-the-solution
SCQM-Datenbank am Bechterew-Symposium
am Bechterew-Symposium vor Betroffenen Forschungsergebnisse Morbus Bechterew («Spondylitis ankylosans»).
Es motiviert uns sehr zu sehen, wie wir mit der Entwicklung und dem Betrieb der Nationalen Online-Datenbank für entzündlich rheumatische Erkrankungen unseren Beitrag für diese Forschung leisten dürfen.
Swiss Clinical Quality Management in Rheumatic Diseases: www.scqm.ch
Schweizerischen Vereinigung Morbus Bechterew: www.bechterew.ch
Sicheres Login mit YubiKey
Webapplikationen mit schützenswerten Daten verlangen nach einer sicheren Authentifizierungslösung.
Was ist ein YubiKey?
Ein YubiKey funktioniert wie eine externe Tastatur und kann einfach per USB an Ihr PC/Mac angeschlossen werden. Der YubiKey funktioniert auf allen Betriebsystemen ohne zusätzliche Software/Treiber-Installation.
Wie funktioniert der YubiKey?
Der YubiKey ist nichts anderes als eine USB-Tastatur. Der Clou: er hat nur einen (goldenen) Kopf und eine Funktionalität. Der YubiKey erzeugt ein OneTime-Token. Das erzeugte Einmalpasswort wird serverseitig validiert und authentifiziert den Benutzer.
Der Login-Prozess
Jedes Mal, wenn der Benutzer den Knopf drückt, wird ein neues OneTime Token erzeugt. Auf dem Login-Formular müssen daher ein persönliches Passwort und das YubiKey Token eingegeben werden. Auf das Eintippen des Benutzernames (eMail-Adresse) kann verzichtet werden, da der YubiKey automatisch eine eindeutige YubiKey ID mitschickt.

Angenehmer Nebeneffekt: andere bekannte Zwei-Faktor-Authenfizierungen machen den Prozess für den Benutzer mühsamer: ich muss z.B. das Token von meinem Handy ablesen und dieses dann in das entsprechende Formularfeld übertragen. YubiKey hingegen erspart dem User Tippen und macht den Login-Prozess bequemer.
Der YubiKey in Ihrer Organisation
Um die Authentifikation für Ihre Webapplikation sicher zu machen, werden alle Ihre Mitarbeiter mit YubiKeys ausgerüstet.
Der Prozess dazu könnte wie folgt aussehen:
- seantis bestellt für Sie die YubiKeys
- Jedem Benutzeraccount wird ein YubiKey zugeordnet
- seantis schickt die YubiKeys per Post an Ihre Mitarbeiter
- Ihre Mitarbeiter können sich sofort mit ihrem persönlichen YubiKey sicher einloggen.
Sie können organisatorisch sicherstellen, dass alle Mitarbeiter ihre YubiKeys sicher in den Büroräumlichkeiten verwahren. So besteht eine erweiterte Kontrolle wer wo und wann Zugriff auf sensible Daten hat.
Persönliche YubiKeys lassen sich mit sofortiger Wirkung entziehen.
Ein YubiKey lässt sich damit bei einer personellen Mutation einfach von einem Benutzer einziehen und an einen anderen weitergeben.
Ein YubiKey verloren
Geht ein Schlüssel verloren oder wird gestohlen, so lässt sich dieser mit sofortiger Wirkung für ungültig erklären (revozieren).
healthinsurance.opendata.ch
Navigator im Krankenkassen-Prämien-Dschungel
Am Swiss Open Data Hackday dieses Wochenende in Basel haben wir innerhalb von nur zwei Tagen eine interaktive Karte mit allen Krankenkassenprämien der Schweiz entwickelt.
Die interaktive Karte ist online unter: http://healthinsurance.opendata.ch
Ein Audio-Live-Mitschnitt der Schlusspräsentation ist auch verfügbar (http://infam.antville.org/stories/2137823)

Impressionen von "Open Data"-Enthusiasten beim Hacken: http://www.flickr.com/photos/ph64/sets/72157631649312225

Visualiserung der Krankenkassenprämien
Am Swiss Open Data Hackday arbeiten wir an einer Visualisierung der Krankenkassenprämien der Schweiz.
Nachdem wir den Prämiendatensatz vom BAG erhalten haben und diesen mittels einem kleinen Tool (SHIP) in eine Datenbank gebracht haben, sind wir nun dabei die Prämiendaten zu visualisieren. Es ist allgemein bekannt, dass die Prämienunterschiede zwischen einzelnen Kantonen sehr gross sind.
Wir möchten die Daten auf einer interaktiven Karte darzustellen, so dass sich regionale Unterschiede einfach erkennen lassen. Für die Karte sollen sich dann dynamische Filter setzen lassen. Interessant könnten hier gewisse "Kovariablen" wie Ärzte- oder Spitaldichte sein. Auch die Entwicklung über Zeit ist sicherlich nicht uninteressant.
Für die interaktive Karten-App bauen wir auf die Applikation "Swiss Train Flows", welche am letzten Swiss Open Data Hackday in Zürich entstanden ist.
Im Team "SHIP" Swiss Open Data Hackday:
- Denis Krienbühl (https://github.com/href)
- Colin Frei (https://github.com/colinfrei)
- Patrick Staehlin (https://github.com/packi)
- Oliver Egger (https://github.com/oliveregger)
- Fabian Reinhard (https://github.com/freinhard)
Last but not least das GitHub Repository: https://github.com/seantis/ship
Stand der Arbeiten
Update FR 28.09.2012 17:30: Kantonsgrenzen auf die Karte zeichnen mit GeoJSON
Update FR 28.09.2012 18:48: Wir werden definitiv ein schönes Farbschema brauchen! Hier ein verdammt schönes Beispiel von http://mbostock.github.com/d3/talk/20111018/choropleth.html
Update FR 28.09.2012 19:24: Ich habe gerade die kleine Python Webapp auf meinem Notebook installiert:
- Die Karte wird geladen
- Die Kantonsgrenzen sehr ordentlich eingezeichnet!
Update FR 28.09.2012 19:46: Wir haben erste Farben! Wow!!
Update FR 28.09.2012 21:02: Wie visualisieren wir die Ärztedichte pro Kanton?
Update SA 29.09.2012 10:15: Tag zwei der Hackdays. Wir haben nun neue Farben mit mehr Bedeutung: rot = über den CH-Durchschnitt / grün = unter dem CH-Durchschnit
Update SA 29.09.2012 10:50: Eine erste Version unserer interaktiven Karten-App ist online: http://ship.seantis.ch
Die ärztliche Handschrift und Dokumentationsfehler
Werden Verschreibungen von Medikamenten von Hand erledigt, kommt es oft zu Fehlern bei der Medikamentenabgabe.
Eine Studie über den Verschreibungsprozess auf einer Station des Universitätsspitals Bern kam zum Schluss, dass Verschreibungsfehler wegen fehlender oder zweideutiger Angaben des Arztes häufig sind [http://www.nzz.ch/aktuell/schweiz/die-handschrift-der-halbgoetter-in-weiss-1.12848707].
Unter folgenden Bedingungen sind Fehler bei der Medikamentenabgabe wahrscheinlicher:
- die Schrift der Verschreibung ist unleserlich
- die Angaben des Arztes sind unvollständig (es fehlen z.B. Informationen zur Dosis eines Medikaments)
- die Verschreibung enthält widersprüchliche Angaben
Aus diesen Gründen empfiehlt es sich, handschriftliche Dokumentationsprozesse durch elektronische Systeme zu ersetzen.
Mit OCQMS entwickeln wir eine modulare webbasierte Software für ein "Clinical Quality Management System". Das System unterstützt den praktizierenden Arzt in seiner täglichen klinischen Arbeit (automatische Generierung von ärztlichen Berichten) und stellt dabei eine strukturierte Ablage der Daten sicher.

Dabei werden nicht nur medikamentöse Verschreibungen, sondern der gesamte Dokumentationsprozess in einem wohlstruktutrierten elektronischen System abgebildet.
OCQMS legt zudem grossen Wert auf eine geeignete Visualisierung der Daten, so dass sich Fehler oder Inkonsistenzen (z.B. bei der Medikation) leichter erkennen lassen.
Die erfassten Daten werden dank Report Generator als Textbausteine bzw. tabellarische Darstellung in den ärztlichen Bericht (Arztbrief) übertragen.

Gefährliche Fehler aufgrund einer unleserlichen Handschrift können so komplett vermieden werden.
SHIP - Swiss Healthcare Insurance Premiums
Wie offen sind die Prämiendaten der Krankenkassen?
Im Rahmen der leidigen Diskussion um den mutmasslichen "Hackerangriff" (http://www.nzz.ch/aktuell/schweiz/bund-liess-comparis-hackerangriff-durchgehen-1.17547910) von Camparis (www.comparis.ch) auf den Prämienrechner des Bundesamts für Gesundheit (www.priminfo.ch) haben wir uns gefragt, wie offen die Prämien-Daten des BAGs verfügbar sind.
Wir haben also beim BAG nachgefragt und erhielten sehr prompt eine Antwort inkl. Link auf den Datensatz mit allen Prämien: http://www.bag.admin.ch/themen/krankenversicherung/01156/02446/index.html?lang=de
Vielen Dank und chapeaux BAG!
Der Datensatz des BAG liegt im Excel-Format vor und ist daher nicht ganz so einfach zu verarbeiten. Wir haben daher noch einmal beim BAG nachgefragt, ob die Daten auch in "Rohkost" verfügbar sind. Das BAG war wiederum sehr hilfsbereit und hat uns Daten sogleich im CSV-Format zu kommen lassen.
Mit diesem Datensatz war es uns einfach möglich, ein kleines Tool für die Prämiendaten zu entwickeln. SHIP (Swiss Healthcare Insurance Premiums) bietet im jetzigen Stadium folgende Funktionalität:
- Einlesen der Prämiendaten in eine beliebige SQL-Datenbank
- Verständliche Feldnamen
- Einfache Abfragen auf die Datenbank
Das Ziel wäre, für die Datenbank eine öffentliche API zu entwickeln.
Wir sind beim Swiss Open Data Hackday zum Thema Health (http://make.opendata.ch) dabei und hoffen da gemeinsam mit anderen die Arbeiten an der API vorantreiben zu können.
Um den unmittelbaren Nutzen der API zu zeigen, könnte man eine kleine Website mit einem Formular zur Prämienabfrage bauen. Auch wäre es möglich, die über die API gewonnenen Daten zu visualisieren.
Idealerweise würde durch die API ein ganz neuer Möglichkeitsraum geöffnet und es entstünden Applikationen, an die wir selbst nie gedacht hätten.
SHIP - Swiss Healthcare Insurance Premiums auf GitHub: https://github.com/seantis/ship
PDF
https://github.com/seantis/ship/blob/master/docs/examples.pdf?raw=true
Artikel über die OneGov Box in der «eGov Präsenz»
Die Strategie der starken Gemeinschaft – einer für alle, alle für einen
Der Verein OneGov.ch steht exemplarisch für den in der Strategie E-Government des Bundes geforderten Grundsatz «Einmal entwickeln – mehrfach nutzen». Die Mitglieder des Vereins – Kunden und Hersteller – stellen gemeinsam ein durchgängiges E-Government-System zur Verfügung, das dem föderalistischen Prinzip der Eigenständigkeit von Gemeinden und Kantonen Rechnung trägt, eine hohe Wiederverwendbarkeit garantiert und bedarfsgerecht weiterentwickelt wird. Die kundenorientierten Lösungen sind streng modular aufgebaut und individuell konfigurierbar.
Ein einmal im Auftrag eines Kunden entwickeltes Modul – zum Beispiel ein Veranstaltungskalender, ein Reservationssystem oder eine Auftragsbox – wird von OneGov.ch zertifiziert und lässt sich danach von allen Mitgliedern einsetzen. Die Kunden teilen so den Entwicklungs- und Pflegeaufwand. Und als Nutzergemeinschaft bietet OneGov.ch seinen Kunden weit mehr als bloss ein Produkt.
- Website «eGov Präsenz»: www.wirtschaft.bfh.ch/de/forschung/publikationen/egov_praesenz.html
- Artikel als PDF herunterladen











