Das Problem.

Im Netz gibt es viele, viele Datenquellen zu den weltweit erfassten Fallzahlen von COVID-19. Sie zusammenzuführen und stets aktuell zu halten, um die Bevölkerung zu informieren oder Entscheidungsträgern eine evidenzbasierte Datengrundlage zu geben, ist gar nicht so leicht.

Unsere Lösung.

Natürlich sind wir nicht die ersten, denen das Problem aufgefallen ist. Daher gibt es eine Reihe von Projekten und Insellösungen, die versuchen, die Daten der einzelnen Websites zusammentragen. Eines davon ist der Corona Data Scaper. In diesem großartigen Open Source-Projekt werden verifizierte Daten mit Hilfe von Scraper buchstäblich zusammengekratzt. Die verschiedenen Datensätze dort sind statisch und für den Menschen gut auszulesen – für Maschinen hingegen nicht, was das automatisierte Auslesen erschwert. Und genau hier setzen wir an: Wir vereinen die dort gesammelten Daten und stellen sie dynamisch über eine quasi-standardisierte REST-Schnittstelle zur Verfügung: We want to connect the dots!

Was die API kann.

Mit der entwickelten CoronaAPI können aktuelle, strukturierte Daten ausgelesen werden, ohne jede individuelle Quelle einzeln zu checken. Der Scraper wird täglich ausgelesen, gespeichert und die Ergebnisse mit den Endpoints der API werden bereitgestellt. Aktuell sind dies alle bekannten COVID-19 Infektionen, die zusätzlich nach ihrer geografischen Lage der definierten Zeiträumen gefiltert werden können. Um die Transparenz zu wahren, wird dabei selbstverständlich stets auch die URL der ursprünglichen Datenquelle ausgegeben.

Wem es was bringt.

Unsere Schnittstelle ermöglicht jedem einen schnellen Zugriff auf die im Corona Data Scaper gesammelten, weltweiten COVID-19 Fallzahlen – aktuell und mit hoher Transparenz. Entwickler:innen, Wissenschaftler:innen oder Journalist:innen können sie mit ihren Lieblingstools auslesen und sie für Simulationen oder Auswertungen weiterverarbeiten. Aber auch Interessierte ohne Programmierkenntnisse können die Daten einfach aus dem Browser kopieren.

Die Herausforderung.

Die eine? Eigentlich sind es gleich mehrere. Die erste haben wir direkt zu Beginn bemerkt: Unsere Browser drohten aufgrund der vielen geöffneten Tabs zu explodieren. Deshalb haben wir eine Landingpage gestaltet, die alle wichtigen Links und Hinweise kompakt zusammenhält. Eine andere Herausforderung sind ganz klar die Datenquellen selbst, die sehr unterschiedlich granuliert sind. Nicht jedes Land veröffentlicht sie mit derselben Detailtreue, was beispielsweise die regionale Zuordnung angeht. Das erschwert die Definition der Endpoints.

Was noch?

Na das Beste zum Schluss: Es ist alles Open Source und jeder kann dazu beitragen! Wer immer einen Scraper schreiben möchte, kann das einfach tun. So können wir gemeinsam z.B. die Daten auf die regionale Ebene für Städte oder Landkreise ausweiten und die Datenlage hierzulande verbessern. Wie eine neue Datenquelle hinzugefügt werden kann, wird auf unserer Website bzw. dem GitHub-Repo des ausgelesenen Scrapers beschrieben. Noch besser wäre es natürlich, wenn die Gesundheitsämter ihre Daten einfach in eine Datenbank pflegen und damit direkt unsere API füttern würden. Dann könnten wir uns den Umweg über die Scraper nämlich gänzlich sparen!

Built With

+ 9 more
Share this project:

Updates

posted an update

Am ersten Tag, nachdem wir alles besprochen haben und eine Richtung festgelegt haben, haben wir den ersten Prototyp des Backends und des Frontends erstellt.

Das Frontend entsteht aus einer Static Site basierend auf VuePress (VueJS) und wird bei Netlify gehostet.

Das Backend ist eine Node (Express) API die das super @lazd/coronadatascraper Projekt verwendet um verschiedene Datensourcen auf der Welt zu scrapen, die ergebnisse dann langfristig zu speichern, und ueber eine leicht bedienbare JSON HTTP API zu verfuegung zu stellen. Dies laeuft alles auf einer AWS EC2 VM.

Sources: Github Team: https://github.com/CoronaAPI DevPost: https://devpost.com/software/1_038_a_daten_0193_coronaapi Frontend (Staging): https://corona-api-landingpage.netlify.com/ Backend Docs / Playground (Staging): https://corona.ndo.dev/api-docs/swagger-ui

Log in or sign up for Devpost to join the conversation.