Architekturdiagramm

Irish Hospital Healthcare Analytics

Datenpipeline von drei externen Quellen (Google Places, SerpAPI, NTPF) über Apache Airflow nach AWS S3 und PostgreSQL, angereichert mit VADER-Sentimentanalyse und ausgewertet in Metabase.

Astronomer Runtime 12.9.0 AWS S3 · eu-west-1 PostgreSQL Metabase v0.52.8.4 Docker Compose
Reviews-Pipeline (Google Places / SerpAPI) Waitlist-Pipeline (NTPF) Gemeinsame Infrastruktur
01

Datenfluss

Google Places API
SerpAPI · Google Maps Reviews
NTPF Government CSV
Quelle
Place Details Endpoint
max. 5 Reviews/Request (Free Tier), täglich Beaumont Hospital
Quelle
Paginierte Maps-Reviews
10/Seite, kostenpflichtig — max_pages zur Kostenkontrolle
Quelle
Outpatient Waitlists
nach Fachbereich & Hospital Group, wöchentliches Update
Orchestrierung — Apache Airflow DAGs
DAG · täglich
prbeaumonthospital.py
place_id als Airflow-Variable gecacht
DAGs
reviews_pipeline.py
+ serpapi_beaumont_backfill.py · Pagination mit 1.5s Backoff
DAG · täglich
hospitaldataireland.py
NTPF-Ingestion (ntpf_op_waitlist)
Data Lake — AWS S3 (eu-west-1)
S3 Bucket
…-prbeaumonthospital
reviews/google/beaumont/{date}/reviews.csv
S3 Bucket
healthproj-raw-data
reviews/serpapi/{slug}/{date}/part1.csv
S3 Bucket
…-lucia-20250912-a3f7
ntpf/op_waitlist/{date}/op_waitlist.csv
Warehouse — PostgreSQL (Rohdaten)
Tabelle
google_reviews_beaumont
Tabelle
google_reviews_{slug}
Beaumont · Mater · Galway
Tabelle
ntpf_outpatient_waitlist
Enrichment & SQL-Views
UNION View
google_reviews
Rohdaten aller Hospitäler vereint
UNION View
google_reviews_nlp
Sentiment via reviews_nlp_beaumont_v2.py (VADER)
kein NLP nötig
→ direkt weiter
Visualisierung
Metabase Dashboards
Sentiment-Trends, Ratings & Waitlist-Kennzahlen je Hospital — verbunden mit den PostgreSQL-Views
02

Lokale Entwicklungsumgebung

MinIOS3-Emulation für lokale Entwicklung (persistent unter include/data/minio)
SparkLokaler Cluster (Master + Worker) via Docker Compose, verfügbar für rechenintensive Transformationen
XCom-BackendS3-gestützt (XCOM_OBJECTSTORAGE_THRESHOLD=0) — umgeht das 48 KB-Limit der Airflow-Metadaten-DB
docker-proxySocat-Proxy für Docker-Socket-Zugriff innerhalb des Compose-Netzwerks
ServicePort
Airflow UI8080
Metabase3000
MinIO Console9001
Spark Master UI8082