#!/usr/bin/env python3 """IT-Hilfe-Sofort.de — Flask-Webapp fuer IT-Dienstleistungen im Gesundheitswesen.""" import os import re from pathlib import Path from flask import Flask BASE_DIR = Path(__file__).parent ARTIKEL_DIR = BASE_DIR PORT = int(os.environ.get("PORT", "5003")) app = Flask(__name__) def _base_template(title: str, content: str, active: str = "") -> str: """Wrapper fuer einheitliches Seitenlayout. Args: title: Seitentitel als String. content: HTML-Inhalt der Seite. active: Aktiver Navigationspunkt. Returns: Vollstaendiges HTML-Dokument als String. """ # Kontakt-Banner (auf jeder Seite) kontakt_banner = """

Bereit fuer die digitale Zukunft?

Kostenlose Erstberatung — wir finden die passende IT-Loesung fuer Ihre Einrichtung.

Jetzt Beratungsgespraech vereinbaren
""" # Footer mit §400-Hinweis footer_vermittlung = """

* Wir vermitteln IT-Dienstleistungen und -Produkte. Es faellt eine Vermittlungsgebuehr gemaess § 400 BGB an — diese fuehrt nicht zu hoeheren Preisen fuer Sie.

""" return f""" {title} | IT-Hilfe-Sofort.de
{content}
{kontakt_banner} """ @app.route("/") def index() -> str: """Startseite.""" content = """

IT-Hilfe fuer das Gesundheitswesen

Sicher, schnell, spezialisiert auf Pflegeeinrichtungen — mit persoenlicher Beratung und massgeschneiderten Loesungen.

Kostenloses Beratungsgespraech

Warum IT-Hilfe-Sofort?

Wir verstehen die besonderen Anforderungen im Gesundheitswesen und liefern passgenaue IT-Loesungen.

DSGVO-konform

Patientendaten in absolut sicheren Haenden — mit zertifizierten Prozessen und Hosting in Deutschland.

Schnelle Reaktion

Garantierte Reaktionszeiten mit persoenlichem Ansprechpartner — weil im Gesundheitswesen jede Minute zaehlt.

Foerderfaehig

KfW-Antraege stellen wir gemeinsam — digitale Infrastruktur ohne finanzielle Huerden.

Unsere Leistungen

Vom Pflegedienst bis zur Tagespflege — wir haben die passende IT-Loesung.

Pflegedienste

Tourenplanung, mobile Datenerfassung und Abrechnung aus einer Hand.

Pflegeheime

Heimverwaltung, Biometrie und digitale Dokumentationssysteme.

Tagespflegen

Terminbuchung, Fahrdienst und Aktivierungsangebote digital organisiert.

Hardware

Server, Thin Clients und Drucker — Beschaffung, Einrichtung und Wartung.

Netzwerk

WLAN-Ausleuchtung, VPN, Firewall und Netzwerksegmentierung.

IT-Support

SLA-Stufen, Fernwartung und 24/7-Monitoring — massgeschneidert.

""" return _base_template("Startseite", content) @app.route("/impressum") def impressum() -> str: """Impressum.""" content = '

Impressum

Daniel Krause
Musterstraße 1
12345 Musterstadt

E-Mail: info@it-hilfe-sofort.de

' return _base_template("Impressum", content) @app.route("/datenschutz") def datenschutz() -> str: """Datenschutzerklaerung.""" content = '

Datenschutzerklaerung

Platzhalter — vollstaendige Datenschutzerklaerung folgt.

' return _base_template("Datenschutz", content) # ── Blog-Artikel-Datenbank ─────────────────────────────── _ARTIKEL = [ ("/blog/telematik-vorschriften", "TI-Anschlusspflicht 2025", "artikel-01-ti-anschlusspflicht.html", "ti-anschlusspflicht-2025"), ("/blog/telematik-vorschriften", "Elektronische Abrechnung ab 12/2026", "artikel-02-elektronische-abrechnung.html", "elektronische-abrechnung-2026"), ("/blog/telematik-vorschriften", "SMC-B-Karte — 33% Abdeckung", "artikel-03-smc-b-karte.html", "smc-b-karte-pflege"), ("/blog/dsgvo-it-sicherheit", "46,9 Mio. EUR DSGVO-Bussgelder", "artikel-04-dsgvo-bussgelder.html", "dsgvo-bussgelder-gesundheitswesen"), ("/blog/dsgvo-it-sicherheit", "BSI: 16 Schwachstellen Pflegesoftware", "artikel-05-bsi-schwachstellen.html", "bsi-schwachstellen-pflegesoftware"), ("/blog/dsgvo-it-sicherheit", "138 Sicherheitsvorfaelle Gesundheitswesen", "artikel-06-sicherheitsvorfaelle.html", "sicherheitsvorfaelle-gesundheitswesen"), ("/blog/telematik-vorschriften", "NIS-2 Registrierungsfrist", "artikel-07-nis2.html", "nis2-registrierungsfrist"), ("/blog/fachkraeftemangel", "200.000 unbesetzte Pflegestellen", "artikel-08-fachkraeftemangel.html", "fachkraeftemangel-pflege"), ("/blog/fachkraeftemangel", "62% Altenpflege — Personalplanung", "artikel-09-personalplanung.html", "personalplanung-altenpflege"), ("/blog/fachkraeftemangel", "KI-Sprachassistent spart 27% Zeit", "artikel-10-ki-sprachassistent.html", "ki-sprachassistent-pflege"), ("/blog/foerderung-finanzierung", "Bis 12.000 EUR Digitalisierungszuschuss", "artikel-11-digitalisierungszuschuss.html", "digitalisierungszuschuss-pflege"), ("/blog/foerderung-finanzierung", "DiPA — 70 EUR monatlich ab 2026", "artikel-12-dipa.html", "dipa-digitale-pflegeanwendungen"), ("/blog/foerderung-finanzierung", "Pflegeversicherung 1 Mrd. Defizit", "artikel-13-pflegeversicherung.html", "pflegeversicherung-defizit"), ("/blog/qualitaet-pruefung", "QPR ambulant ab Juli 2026", "artikel-14-qpr-ambulant.html", "qpr-ambulant-2026"), ("/blog/qualitaet-pruefung", "PeBeM verpflichtend ab 2026", "artikel-15-pebem.html", "pebem-2026"), ("/blog/qualitaet-pruefung", "MDK-Pruefung digital bestehen", "artikel-16-mdk-pruefung.html", "mdk-pruefung-digital"), ("/blog/telematik-vorschriften", "ePA fuer alle — Opt-out", "artikel-17-epa.html", "epa-opt-out"), ("/blog/dsgvo-it-sicherheit", "Cloud-Hosting Deutschland", "artikel-18-cloud-hosting.html", "cloud-hosting-deutschland"), ("/blog/praxis-tipps", "Tablets fuer die Pflege — Top 5", "artikel-19-tablets.html", "tablets-pflege-top5"), ("/blog/praxis-tipps", "WLAN im Pflegeheim", "artikel-20-wlan.html", "wlan-pflegeheim"), ("/blog/praxis-tipps", "Offline-Dokumentation", "artikel-21-offline.html", "offline-dokumentation-pflege"), ("/blog/dsgvo-it-sicherheit", "E-Mail-Verschluesselung", "artikel-22-email-verschluesselung.html", "email-verschluesselung-pflege"), ("/blog/praxis-tipps", "Medikationsplan digital", "artikel-23-medikationsplan.html", "medikationsplan-digital"), ("/blog/praxis-tipps", "IT-Notfallplan 10-Punkte", "artikel-24-it-notfallplan.html", "it-notfallplan-pflege"), ] # ── Leistungen-Daten ───────────────────────────────────── _LEISTUNGEN = { "pflegedienste": { "titel": "IT-Loesungen fuer ambulante Pflegedienste", "cards": [ ("Tourenplanung", "Digitale Tourenplanung und mobile Datenerfassung vor Ort. Effizientere Routen und Dokumentation auf dem Tablet."), ("Mobile Dokumentation", "Echtzeit-Dokumentation von Pflegemassnahmen direkt im Einsatz. Synchronisiert mit der zentralen Verwaltung."), ("Abrechnung und Reporting", "Automatisierte Abrechnung und Auswertungen. Weniger Verwaltungszeit, mehr Zeit fuer Patienten."), ], }, "pflegeheime": { "titel": "IT-Loesungen fuer stationaere Pflegeheime", "cards": [ ("Heimverwaltung", "Digitale Heimpleitung: Dienstplanung, Raummanagement, Budget-Controller. Alles in einer Plattform."), ("Biometrie und Zutrittssysteme", "Fingerabdruck- und Gesichtserkennung fuer sicheren Zutritt. DSGVO-konform und benutzerfreundlich."), ("Dokumentationssysteme", "Komplette digitale Dokumentation von Pflegeplanung bis Medikationsueberwachung. Vollstaendig auditfaehig."), ], }, "tagespflegen": { "titel": "IT-Loesungen fuer Tagespflegen", "cards": [ ("Terminbuchung", "Online-Terminbuchung mit Kalendersynchronisation. Patienten koennen Termine direkt vereinbaren."), ("Fahrdienstverwaltung", "Organisation von Fahrdiensten und Kurieren. Automatische Zuweisung und Echtzeit-Tracking."), ("Aktivierungsangebote", "Digitales Planungs- und Monitoring-System fuer Aktivitaeten und Therapie-Programme im Tagesverlauf."), ], }, } # ── IT-Service-Daten ───────────────────────────────────── _IT_SERVICE = { "hardware": { "titel": "IT-Hardware fuer das Gesundheitswesen", "cards": [ ("Server und Workstations", "Auswahl, Installation und Wartung von Servern und Workstations. DSGVO-konform und skalierbar."), ("Thin Clients und Endgeraete", "Kosteneffiziente Thin Clients mit zentralem Management. Einfache Administration, hohe Sicherheit."), ("Drucker und Peripherie", "Medizinische Geraete und Drucker mit Spezialtreibern. Integration in bestehende Netzwerke."), ("Beschaffung und Consulting", "Unabhaengige Beratung zur Hardware-Auswahl. Gutes Preis-Leistungs-Verhaeltnis garantiert."), ], }, "netzwerk": { "titel": "IT-Netzwerk fuer Pflegeeinrichtungen", "cards": [ ("WLAN-Ausleuchtung", "Professionelle WLAN-Planung und -Implementierung fuer komplette Einrichtungen. Lueckenlose Abdeckung."), ("VPN und Remote-Zugang", "Verschluesselte Verbindung fuer mobiles Arbeiten. Sichere Fernwartung und Fernadministration."), ("Firewall und Segmentierung", "Zwei-Wege-Firewall mit medizinischen Geraete-Portabilitaet. Trennung von Betriebs- und Pflegedaten."), ("Netzwerkmonitoring", "24/7 Ueberwachung aller Netzwerk-Komponenten. Proaktive Stoerungserkennung und automatische Eskalation."), ], }, "email-kommunikation": { "titel": "E-Mail und Kommunikation", "cards": [ ("Microsoft 365", "Vollstaendige Implementierung und Verwaltung von Microsoft 365. Cloud-Hosting in Deutschland verfuegbar."), ("Exchange und VoIP", "E-Mail-Server mit Exchange-Integration und VoIP-Telefonie. Nahtlose Kommunikation aller Abteilungen."), ("Spam-Schutz und Archivierung", "Mehrschichtiger Spam-Schutz und automatische Archivierung fuer Compliance und Aufbewahrungspflichten."), ], }, "support-wartung": { "titel": "IT-Support und Wartung", "cards": [ ("SLA-Stufen", "Flexible Service-Level-Agreements: von Standard bis Mission-Critical. Garantierte Reaktionszeiten fuer alle Stoerungen."), ("Reaktionszeiten", "Erste Antwort innerhalb von 30 Minuten. Vollstaendige Loesung innerhalb von 4 Stunden bei schwerwiegenden Problemen."), ("Fernwartung und Hosting", "Sichere Fernwartung mit Echtzeit-Desktop-Zugriff. DSGVO-konforme Hostung aller Systeme."), ("Monitoring und Wartung", "Automatisiertes Monitoring aller IT-Komponenten. Regelmaessige Sicherheitsupdates und Wartung in Einweisungszeiten."), ], }, } # ── Helper: Seitenleiste ────────────────────────────────── def _sidebar(routes: list[tuple[str, str, str, str]]) -> str: """Erstelle Seitenleiste mit Artikel-Links. Args: routes: Liste von (Sektion, Titel, Datei, Slug)-Tupeln. """ links: list[str] = [] for _sektion, titel, _datei, slug in routes: links.append('' + titel + "") return ( "
" + "".join(links) + "
" ) # ── Helper: Karten bauen ───────────────────────────────── def _cards(titel: str, beschreibung: str) -> str: """Erstelle eine Service-Karte.""" return '

' + titel + "

" + beschreibung + "

" # ── Blog-Sektionen (Übersichtsseiten) ───────────────────── @app.route("/blog/") def blog_section(slug: str) -> str: """Blog-Sektion — zeigt ersten Artikel + Sidebar mit allen Artikeln der Sektion.""" route_key = "/blog/" + slug # Finde ALLE Artikel dieser Sektion (4-Tupel) sektions_artikel: list[tuple[str, str, str, str]] = [ (r, t, d, s) for r, t, d, s in _ARTIKEL if r == route_key ] if sektions_artikel: _, haupt_titel, datei, _ = sektions_artikel[0] pfad = ARTIKEL_DIR / datei if pfad.exists(): inhalt = pfad.read_text(encoding="utf-8") match = re.search(r"]*>(.*?)", inhalt, re.DOTALL | re.IGNORECASE) inhalt = match.group(1) if match else inhalt else: inhalt = "

Artikeltext folgt in Kuerze.

" else: inhalt = "

Keine Artikel in dieser Sektion gefunden.

" haupt_titel = slug.replace("-", " ").title() sektions_artikel = _ARTIKEL sidebar = _sidebar(sektions_artikel) content = ( "

" + haupt_titel + "

" + inhalt + "
" + sidebar + "
" ) return _base_template("Blog: " + haupt_titel, content, active="blog") # ── Individuelle Artikel-Seiten (SEO-optimiert) ────────── _ARTIKEL_BY_SLUG: dict[str, tuple[str, str, str, str]] = { slug: (sektion, titel, datei, slug) for sektion, titel, datei, slug in _ARTIKEL } @app.route("/artikel/") def artikel_detail(slug: str) -> str: """Einzelner Artikel — eigene SEO-URL mit vollstaendigem Inhalt.""" eintrag = _ARTIKEL_BY_SLUG.get(slug) if eintrag: sektion, titel, datei, _ = eintrag pfad = ARTIKEL_DIR / datei if pfad.exists(): inhalt = pfad.read_text(encoding="utf-8") match = re.search(r"]*>(.*?)", inhalt, re.DOTALL | re.IGNORECASE) inhalt = match.group(1) if match else inhalt else: inhalt = "

Artikeltext folgt in Kuerze.

" # Sidebar: andere Artikel derselben Sektion sektions_artikel: list[tuple[str, str, str, str]] = [ (r, t, d, s) for r, t, d, s in _ARTIKEL if r == sektion and s != slug ] sidebar = _sidebar(sektions_artikel) content = ( "

" + titel + "

" + inhalt + "
" + sidebar + "
" ) return _base_template(titel, content, active="blog") else: content = "

Artikel nicht gefunden

Dieser Artikel existiert leider nicht.

" return _base_template("Artikel nicht gefunden", content) # ── Weitere Routen ─────────────────────────────────────── @app.route("/ueber-uns") def ueber_uns() -> str: """Ueber uns.""" content = ( '
' "

Ueber uns

" "

Daniel Krause ist IT-Berater im Gesundheitswesen mit langjaehriger Erfahrung in der Digitalisierung von Pflegeeinrichtungen.

" "

Unsere Werte

" '
' '

Transparenz

Klare Kommunikation und faire Preise — keine versteckten Kosten.

' '

Schnelligkeit

Reaktionszeit unter 30 Minuten — weil im Gesundheitswesen Zeit zaehlt.

' '

DSGVO-Compliance

Hosting in Deutschland, Ende-zu-Ende-Verschluesselung und regelmaessige Audits.

' "
" ) return _base_template("Ueber uns", content) @app.route("/kontakt") def kontakt() -> str: """Kontakt mit CRM-Formular.""" content = ( '
' "

Kontakt

" '
' '
' "

Wir beraten Sie gerne persoenlich

" "

Sprechen Sie uns an — wir finden die passende IT-Loesung fuer Ihre Einrichtung.

" '

E-Mail: info@it-hilfe-sofort.de

' "
" '
' '' "
" "
" ) return _base_template("Kontakt", content) @app.route("/faq") def faq() -> str: """FAQ.""" fragen: list[tuple[str, str]] = [ ("Wie schnell sind Sie vor Ort?", "Innerhalb von 24—48 Stunden."), ("Was kostet der IT-Support?", "Ab 29 EUR/Monat pro Geraet."), ("Uebernehmen Sie die komplette IT?", "Ja, von der Installation bis zum 24/7-Monitoring."), ("Wie stellen Sie DSGVO-Compliance sicher?", "Hosting in Deutschland, Verschluesselung, Zugangskontrollen und regelmaessige Audits."), ("Bieten Sie auch Schulungen an?", "Ja, fuer alle Mitarbeiter Ihrer Einrichtung — vor Ort oder remote."), ("Wie laeuft das Onboarding ab?", "Kostenlose Erstberatung, dann Umsetzung in 2—4 Wochen."), ("Koennen Sie auf bestehende Systeme aufsetzen?", "Ja, wir arbeiten mit allen gaengigen Pflegesoftwaren."), ("Gibt es einen Notfallservice?", "Ja, 24/7 Notfallservice fuer kritische Stoerungen."), ] fragen_html_parts: list[str] = [] for f, t in fragen: fragen_html_parts.append( "
" + f + "
" + t + "
" ) fragen_html = "".join(fragen_html_parts) content = "

Haeufige Fragen

Hier finden Sie Antworten auf die haeufigsten Fragen. Falls Ihre Frage nicht dabei ist — kontaktieren Sie uns direkt.

" + fragen_html + "
" return _base_template("FAQ", content) @app.route("/leistungen/") def leistungen(slug: str) -> str: """Leistungs-Seite.""" data = _LEISTUNGEN.get(slug) if not data: content = "

Leistung nicht gefunden

" return _base_template("Leistungen", content) cards_items = [_cards(titel, beschreibung) for titel, beschreibung in data["cards"]] cards_all = '
' + "".join(cards_items) + "
" content = "

" + data["titel"] + "

Massgeschneiderte IT-Loesungen fuer Ihre Einrichtung.

" + cards_all + "
" return _base_template(data["titel"], content, active="leistungen") @app.route("/it-service/") def it_service(slug: str) -> str: """IT-Service-Seite.""" data = _IT_SERVICE.get(slug) if not data: content = "

Service nicht gefunden

" return _base_template("IT-Service", content) cards_items = [_cards(titel, beschreibung) for titel, beschreibung in data["cards"]] cards_all = '
' + "".join(cards_items) + "
" content = "

" + data["titel"] + "

Professionelle IT-Infrastruktur aus einer Hand.

" + cards_all + "
" return _base_template(data["titel"], content, active="it-service") # ── Main ────────────────────────────────────────────────────────────── if __name__ == "__main__": print(f"IT-Hilfe-Sofort.de startet auf http://127.0.0.1:{PORT}") app.run(host="127.0.0.1", port=PORT, debug=False)