---
title: ""

format: 
  html:
    fig-width: 9
    fig-height: 12
    fig-dpi: 300
    embed-resources: TRUE # Entwicklung
    theme: "null" # Entwicklung
    # embed-resources: FALSE # Veröffentlichung
    # theme: none # Veröffentlichung

execute: 
  echo: FALSE
  output: asis
  warning: FALSE
  error: FALSE
---

```{r}
#| label: pakete_und_daten
#| output: false
library(tidyverse)
library(SMChelpR)
library(leaflet) # https://rstudio.github.io/leaflet/
library(leaflet.extras)
library(geojsonio)
library(sp)
library(crs)
library(rmapshaper)
library(mapview) # to save maps as images, PhantomJS needed!
library(jsonlite)
library(htmltools)
library(htmlwidgets)
library(DT)

Sys.setenv(OPENSSL_CONF="/dev/null")

try(setwd(dirname(rstudioapi::getActiveDocumentContext()$path)))

file_name_code <- "Fruehchen_Mindestmengen.qmd"
imagepath <-
  file.path("fileadmin", "user_upload", "produkte", "Fruehchen_Mindestmengen")
dir.create(imagepath, showWarnings = FALSE)

## workspace directory in RStudio interaktiv
if(rstudioapi::isAvailable()) {
  setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
}

if(is.na(file_name_code)){stop("Dateiname der qmd nicht gesetzt")}
if(imagepath == file.path("fileadmin", "user_upload", "produkte")){stop("Pfad für Dateien nicht gesetzt")}

file.copy(
  from = file_name_code, 
  to = file.path(imagepath, paste0(today(), "_", file_name_code)), 
  overwrite = TRUE)
```

```{r}
#| label: set-graphic-parameters
#| output: false 

options(scipen = 999) # set scientific notation to be off
SMC_theme_ggplot()

caption_fruehchen <-
  "Quelle: Mindestmengen-Transparenzliste 2024 des AOK-Bundesverbandes"

caption_fahrtzeiten <- 
  "Quelle: Tim Holthaus, Universität Wuppertal, Berechnungen: Science Media Center Germany"

if(exists("caption_")){stop("Caption wurde nicht angepasst")}
```

::: m-news-single__ce
-   13 Kliniken fallen 2024 aus der Versorgung, die Fahrtzeiten bleiben aber meist unverändert
-   mögliche Problemregionen in Bayern und Baden-Württemberg
-   einige Kliniken unterhalb der neuen Mindestmenge bleiben in der Versorgung

### Einleitung

Ab dem kommenden Jahr gilt in Deutschland eine neue gesetzliche Mindestfallzahl für die Behandlung von Frühgeborenen mit einem Geburtsgewicht von unter 1250 Gramm. Kliniken dürfen die Versorgung dieser besonders früh geborenen Kinder künftig nur noch mit den Krankenkassen abrechnen, wenn sie mindestens 25 solcher Hochrisiko-Frühchen im Jahr behandeln. Bisher lag diese sogenannte Mindestmenge bei 14, in einer Übergangsphase bei 20 Fällen pro Jahr. In Deutschland dürfen nur Level-1-Kinderkliniken der höchsten Versorgungsstufe Extrem-Frühchen behandeln. Kinderkliniken, die nun ab 2024 aus der Versorgung fallen, werden aber nicht automatisch geschlossen, sondern sie verlieren lediglich ihren Level-1-Status und dürfen keine Extrem-Frühchen mehr behandeln. Kinder mit einem Geburtsgewicht über 1250 Gramm dürfen in der Regel weiterhin versorgt werden. Hierzulande wurden 2022 rund 740 000 Kinder geboren. Nur etwa 0,6 Prozent aller Neugeborenen wiegen unter 1250 Gramm.

Die Entscheidungsmacht darüber, welche Klinik künftig die Extrem-Frühchen-Behandlung abrechnen darf, liegt in erster Linie bei den Krankenkassen. Sie prüfen anhand bisheriger Fallzahlen und Prognosen der Kliniken für das jeweils kommende Jahr, ob die neue Mindestmenge künftig erreicht wird. Die Kinderkliniken in Deutschland haben ihre Bescheide für 2024 bereits bis zum 7. Oktober dieses Jahres erhalten. Die Bundesländer haben nun jedoch die Möglichkeit, Kliniken unterhalb der neuen Mindestmenge im Einvernehmen mit den Kassen durch Ausnahmeregelungen zu „retten", wie es bereits [Baden-Württemberg](https://www.swr.de/swraktuell/baden-wuerttemberg/ausnahme-genehmigungen-fuer-fruehgeborenen-stationen-in-kliniken-100.html){target="_blank"} und [Mecklenburg-Vorpommern](https://www.aerzteblatt.de/nachrichten/146663/Mecklenburg-Vorpommern-will-Ausnahmeregelung-fuer-Extrem-Fruehchen-Stationen){target="_blank"} angekündigt haben. Eine evidenzbasierte, wissenschaftliche Grundlage besteht dafür aber meist nicht.

Die Anhebung der Mindestmengen in der pädiatrischen Versorgung wird als ein Schritt zur Verbesserung der medizinischen Qualität angesehen, was mittlerweile auch durch [Untersuchungen](https://www.g-ba.de/downloads/40-268-7307/2020-12-17_Mm-R_Fruehgeborene_TrG.pdf){target="_blank"} belegt ist. Höhere Fallzahlen sind in Kliniken mit einer geringeren Säuglingssterblichkeit assoziiert. Die neue Mindestmenge von 25 Fällen pro Jahr und Klinik ist trotz der Erhöhung als konservativ einzuschätzen. Die optimale Mindestmenge für die bestmögliche Versorgung liegt für Extrem-Frühgeborene wohl eher bei [70 Fällen jährlich](https://www.thieme-connect.de/products/ejournals/abstract/10.1055/a-1701-6686){target="_blank"}.

EU-Länder wie Portugal und Schweden haben die Zentralisierung ihrer Geburts- und Kinderkliniken stark vorangetrieben. In beiden Fällen werden Kinder in nur wenigen spezialisierten Zentren mit hohen Fallzahlen geboren und versorgt. Trotz der geringeren Klinikdichte liegt die [Säuglingssterblichkeit](https://data.worldbank.org/indicator/SH.DYN.NMRT?most_recent_value_desc=true){target="_blank"} in Schweden und Portugal unter jener in Deutschland.

Doch selbst Befürworter höherer Mindestmengen werfen die Frage auf, ob die neuen Kriterien auch unerwünschte Konsequenzen für die Erreichbarkeit und Verfügbarkeit der Behandlung haben könnten. Besonders ins Auge gefasst werden dabei die Fahrtzeiten zur nächsten geeigneten Level-1-Kinderklinik. Vor allem in ländlichen und abgelegenen Regionen, wo die Entfernungen zu medizinischen Einrichtungen oft jetzt schon groß sind, könnten längere Fahrten möglicherweise zu Verzögerungen bei der Versorgung führen, so die Befürchtung. Frühchen werden aber meist nicht überraschend geboren. Kliniken und Eltern können sich gut darauf vorbereiten. Eine Frühgeburt ist in den allermeisten Fällen vorhersehbar und damit die spätere Frühchenbehandlung auch planbar -- eine Grundvoraussetzung für eine gesetzliche Mindestmenge. Eine echte unerwartete Notfallgeburt ist sehr selten. Die Herausforderung besteht darin, die Balance zwischen Qualitätsverbesserungen und der Erreichbarkeit der Versorgung zu finden.

Auf den folgenden interaktiven Karten werden die aktuellen Fahrtzeiten zu einer geeigneten Level-1-Kinderklinik sowie die Fahrtzeitveränderung bei einer Mindestmenge von 25 dargestellt. Die Methodik und die Limitationen des Modells werden weiter unten erläutert.

```{r}
#| label: data_load

####################
# Frühchen clinics #
####################
fruehchen_kliniken <- read_csv(file.path(imagepath, "fruehchen_list_final.csv"))
fruehchen_kliniken <- fruehchen_kliniken %>%
  select(name_aok, fruehchen_count_2021, fruehchen_count_07_2021_06_2022, fruehchen_count_2022, fruehchen_count_07_2022_06_2023, current_fruehchen_clinic, `2024_permission`, lat, lon)

############
# Polygons #
############

# 1. Bundesländer
bundeslaender <- geojson_read(file.path(imagepath, "bevoelkerungsdichte_bundeslaender.geojson"), what = "sp") # ETRS89 / UTM Zone 32N (EPSG 25832, or EPSG 4647)
bundeslaender@proj4string <-CRS("+init=epsg:25832") # no projection was defined in the geojson
bundeslaender <- spTransform(bundeslaender, CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")) # transform to right projection
bundeslaender <-
  ms_simplify(bundeslaender,
              keep = 0.05,
              keep_shapes = FALSE)

# 2. Gemeinden
gemeinde_fahrtzeiten <- topojson_read(file.path(imagepath, "fahrtzeiten_simplified.topojson"))
```

```{r}
#| label: gemeinde_polygon_labels
#| output: false

add_polygon_label_col <- function(polygon_color_col, polygon_color_label) {
  gemeinde_fahrtzeiten <- gemeinde_fahrtzeiten %>%
    mutate(
      pretty_EWZ = format(EWZ, big.mark=" ", decimal.mark=","),
      pretty_polygon_color_col = round(gemeinde_fahrtzeiten[[polygon_color_col]], digits=0),
      # pretty_polygon_color_label = gsub("<br/>", "", polygon_color_label),
      label = paste0(
        "<p><strong>", GEN, "</strong><br/>", 
        polygon_color_label, ": ", pretty_polygon_color_col, 
        "<br/>Bevölkerung: ", pretty_EWZ, "<br/></p>"
      )
    ) %>%
    rowwise() %>% # transform rowwise to html tag
    mutate(
      label = HTML(label)
    )
  
  gemeinde_fahrtzeiten
}
```

```{r}
#| label: map_function

create_base_map <- function(markers_data, polygon_color_col, distance_legend_values, distance_legend_title, pal) {
  
  gemeinde_fahrtzeiten <- add_polygon_label_col(polygon_color_col, distance_legend_title)
  extra_style <- tags$style(".leaflet-container { background: white !important; }") 
  
  map <- leaflet(options = leafletOptions(
    minZoom = 6, 
    maxZoom = 10,
    opacity = 0,
    doubleClickZoom = FALSE, 
    scrollWheelZoom = FALSE,
    maxBoundsViscosity = 1 # If maxBounds is set, this option controls how solid the bounds are when dragging
  )) %>%
    setView(11.5, 51, 6) %>%
    setMaxBounds(3, 53.5, 16.5, 47) %>%
    addLegend( # polygon legends (Gemeinden)
      "bottomright", 
      pal = pal, 
      values = distance_legend_values,
      title = distance_legend_title,
      opacity = 1
    ) %>%
    addPolygons(
      data = gemeinde_fahrtzeiten,
      smoothFactor = 0.2, 
      fillOpacity = 1,
      fillColor = ~pal(gemeinde_fahrtzeiten[[polygon_color_col]]),
      weight = 0,
      color = ~pal(gemeinde_fahrtzeiten[[polygon_color_col]]),
      label = gemeinde_fahrtzeiten$label,
      labelOptions = labelOptions(
        style = list(
          "background" = "#B9D9EB",
          "font-size" = "12px"
        )
      ),
      highlight = highlightOptions( # on mouseover
        weight = 3,
        color = "black",
        # bringToFront = TRUE,
        sendToBack = TRUE
      )
    ) %>%
    addPolylines(
      data=bundeslaender,
      color="black",
      weight = 1
    ) %>%
    addCircleMarkers(
      data = markers_data,
      radius = 4,
      color = markers_data$color,
      stroke = FALSE,
      fillOpacity = 1,
      label = markers_data$label,
      labelOptions = labelOptions(
        style = list(
          "font-size" = "12px"
        )
      ),
      options = markerOptions(riseOnHover = TRUE)
    ) %>%
    prependContent(extra_style)

  map
}
```

### Status quo

Die folgende Kartenvisualisierung zeigt alle Level-1-Kinderkliniken, die aktuell Frühchen unter 1250 Gramm behandeln. Außerdem sind die durchschnittlichen Fahrtzeiten bis zur nächsten Level-1-Klinik für jede Gemeinde dargestellt: Dunklere Gemeinden haben längere Durchschnittsfahrtzeiten.

Eine Stunde und mehr benötigt man derzeit etwa im Grenzbereich von Mecklenburg-Vorpommern und Brandenburg, ebenso im Südwesten Brandenburgs an der Grenze zu Sachsen-Anhalt und im Norden Niedersachsens.

```{r}
#| label: as_is_markers

as_is_markers <- fruehchen_kliniken %>%
  filter(current_fruehchen_clinic == TRUE) %>% # Dietrich-Bonhoeffer-Klinikum and AMEOS Klinikum St. Elisabeth Neuburg – Standort Ingolstadt do not exist in 2023 aok data
  mutate(
    fruehchen_count_2021 = if_else(!is.na(fruehchen_count_2021), as.character(fruehchen_count_2021), "keine Werte"),
    fruehchen_count_07_2021_06_2022 = if_else(!is.na(fruehchen_count_07_2021_06_2022), as.character(fruehchen_count_07_2021_06_2022), "keine Werte"),
    # create icon color column
    color = "#008000",

    # create label column as html string
    label = paste0(
      "<strong>", name_aok, "</strong>",
      "<br/>",
      "<p>Fallzahl 01.01.2021 - 31.12.2021: ", fruehchen_count_2021,
      "<br/>",
      "Fallzahl 01.07.2021 - 30.06.2022: ", fruehchen_count_07_2021_06_2022,
      "<br/>",
      "Mindestmenge: 20",
      '<br/><span style="color:', color, '">aktuelle Abrechnungserlaubnis für <br/>Frühchen unter 1250 g</span></p>'
      )
  ) %>%
  rowwise() %>% # transform rowwise to html tag
  mutate(
    label = HTML(label)
  )

```

```{r}
#| label: as_is_map

as_is_legend_values <- gemeinde_fahrtzeiten$fahrtzeit_scenario_1
as_is_legend_title <- "Aktuelle durchschnittliche <br/> Fahrtzeit in Minuten"
as_is_pal <- colorNumeric(
  palette = "Blues", # "Greys", "YlOrRd"
  domain = gemeinde_fahrtzeiten$fahrtzeit_scenario_1
)
as_is_map <- create_base_map(as_is_markers, "fahrtzeit_scenario_1", as_is_legend_values, as_is_legend_title, as_is_pal)

filename <- paste0(today(), "_", "Istzustand_MM20")

data_choropleth <- tibble(
  fileformat = c("csv", "topojson"),
  filename_suffix = c("Kliniken", "Fahrtzeiten")
)
images_choropleth <- tibble(
  fileformat = c("html"),
  filename_suffix = c("")
)
captions = c(caption_fruehchen, caption_fahrtzeiten)

htmlpfad <- file.path(imagepath, paste0(filename, ".html"))
datenpfad_clinics <- file.path(imagepath, paste0(filename, "_Kliniken.csv"))
datenpfad_distance <- file.path(imagepath, paste0(filename, "_Fahrtzeiten.topojson"))

mapshot(as_is_map, url=htmlpfad)
subset_clinics_25 <- as_is_markers %>%
  write_csv(datenpfad_clinics)
driving_distance <- topojson_write(input=gemeinde_fahrtzeiten, file=datenpfad_distance)

as_is_map
image_helper_light(
  filename=filename,
  filepath=imagepath,
  data=data_choropleth,
  images=images_choropleth,
  captions=captions
)

```

### 13 Kliniken fallen 2024 aus der Versorgung

Auf der nächsten Karte sind wieder alle aktuellen Level-1-Kinderkliniken dargestellt. Die Farbe der Klinik gibt nun aber an, ob die jeweilige Klinik für das Jahr 2024 eine Abrechnungserlaubnis von den Krankenkassen erhalten hat, also die neue Frühchen-Mindestmenge von 25 entweder bereits erreicht ist oder künftig höchstwahrscheinlich erreicht wird (sogenannte Prognose). Grüne Kliniken haben die entsprechende Erlaubnis der Krankenkassen, rote Kliniken hingegen dürfen die Extrem-Frühchen-Behandlung künftig nicht mehr abrechnen. Gelbe Kliniken erfüllen die neuen Anforderungen ebenfalls nicht, jedoch haben die jeweiligen Landesbehörden eine Ausnahmeregelung angekündigt. Auf dieser Karte ist nun die Veränderung der durchschnittlichen Fahrtzeit zur nächsten geeigneten Frühchen-Klinik dargestellt; also wie viel länger oder kürzer die Bevökerung jeder Gemeinde ab 2024 im Durchschnitt fahren muss, wenn die roten und gelben Kliniken aus der Extrem-Frühchen-Versorgung fallen. Insgesamt dürfen im Vergleich zu heute im kommenden Jahr 13 Kinderkliniken keine Extrem-Frühchen mehr behandeln. Einen Sonderfall bildet in diesem Modell das Dietrich-Bonhoeffer-Klinikum in Mecklenburg-Vorpommern (siehe weiter unten).

```{r}
#| label: differences_markers

# yellow and red clinics get different hover label
old_counts_subset_names <- c(
  "Klinikum Itzehoe", "Marienhospital Bottrop", "Helios St. Johannes Klinik", "Universitätsklinikum Gießen und Marburg GmbH – Standort Marburg", 
  "Klinikum Hanau", "Diakonie-Klinikum Schwäbisch Hall", "Klinikum am Steinenberg", "St. Elisabethen-Klinikum Ravensburg", "Leopoldina Krankenhaus der Stadt Schweinfurt",
  "Klinikum Coburg", "Klinikum Bayreuth", "Klinikum Fürth", "Klinikum St. Georg"
)

differences_markers <- fruehchen_kliniken %>%
  filter(!(name_aok %in% old_counts_subset_names)) %>% 
  filter(`2024_permission` != "False") %>% # KJF Klinik Sankt Elisabeth, Neuburg a. d. Donau does not exist in 2024 aok data
  mutate(
    fruehchen_count_2022 = if_else(!is.na(fruehchen_count_2022), as.character(fruehchen_count_2022), "keine Werte"),
    fruehchen_count_07_2022_06_2023 = if_else(!is.na(fruehchen_count_07_2022_06_2023), as.character(fruehchen_count_07_2022_06_2023), "keine Werte"),
    # create icon color column
    color = if_else(
      `2024_permission` == "True",
      "#008000",
      if_else(`2024_permission` == "yes_no_mm", "#E9B824", "#DC143C")
    ),

    # create label column as html string
    color_text = if_else(
      `2024_permission` == "True",
      "Ab 2024 Abrechnungserlaubnis für <br/>Frühchen unter 1250 g",
      if_else(
        `2024_permission` == "yes_no_mm",
        "Ab 2024 Ausnahmeregelung durch <br/>Landesbehörde geplant",
        "Ab 2024 <i>keine</i> Abrechnungserlaubnis für <br/>Frühchen unter 1250 g")
    ),
    label = paste0(
      "<strong>", name_aok, "</strong>",
      "<br/>",
      "<p>Fallzahl 01.01.2022 - 31.12.2022: ", fruehchen_count_2022,
      "<br/>",
      "Fallzahl 01.07.2022 - 30.06.2023: ", fruehchen_count_07_2022_06_2023,
      "<br/>",
      "neue Mindestmenge: 25",
      '<br/><span style="color:', color, '">', color_text, '</span></p>'
      )
  ) %>%
  rowwise() %>% # transform rowwise to html tag
  mutate(
    label = HTML(label)
  )

```

```{r}
#| label: differences_map
differences_legend_values <- gemeinde_fahrtzeiten$Dif
differences_legend_title <- HTML("Veränderung der <br/> Fahrtzeit in Minuten")
differences_pal <- colorNumeric(
  palette = "Blues",
  domain = gemeinde_fahrtzeiten$Dif
)

old_count_subset <- fruehchen_kliniken %>%
  filter(name_aok %in% old_counts_subset_names) %>%
  mutate(
    # create icon color column
    color = if_else(
      `2024_permission` == "True",
      "#008000",
      if_else(`2024_permission` == "yes_no_mm", "#E9B824", "#DC143C")
    ),

    # create label column as html string
    color_text = if_else(
      `2024_permission` == "True",
      "Ab 2024 Abrechnungserlaubnis für <br/>Frühchen unter 1250 g",
      if_else(
        `2024_permission` == "yes_no_mm",
        "Ab 2024 Ausnahmeregelung durch <br/>Landesbehörde geplant",
        "Ab 2024 <i>keine</i> Abrechnungserlaubnis für <br/>Frühchen unter 1250 g")
    ),
    label = paste0(
      "<strong>", name_aok, "</strong>",
      "<br/>",
      "letzte verfügbare Zeiträume:",
      "<p>Fallzahl 01.01.<strong>2021</strong> - 31.12.<strong>2021</strong>: ", fruehchen_count_2021,
      "<br/>",
      "Fallzahl 01.07.<strong>2021</strong> - 30.06.<strong>2022</strong>: ", fruehchen_count_07_2021_06_2022,
      "<br/>",
      "neue Mindestmenge: 25",
      '<br/><span style="color:', color, '">', color_text, '</span></p>'
      )
  ) %>%
  rowwise() %>% # transform rowwise to html tag
  mutate(
    label = HTML(label)
  )

dietrich_bonhoeffer <- fruehchen_kliniken %>%
  filter(name_aok == "Dietrich-Bonhoeffer-Klinikum") %>%
  mutate(
    fruehchen_count_2020 = 8,
    fruehchen_count_07_2020_06_2021 = 8,
    # create icon color column
    color = "#DC143C",

    # create label column as html string
    color_text = "Seit 2023 <i>keine</i> Abrechnungserlaubnis für <br/>Frühchen unter 1250 g",
    label = paste0(
      "<strong>", name_aok, "</strong>",
      "<br/>",
      "letzte verfügbare Zeiträume:",
      "<p>Fallzahl 01.01.<strong>2020</strong> - 31.12.<strong>2020</strong>: ", fruehchen_count_2020,
      "<br/>",
      "Fallzahl 01.07.<strong>2020</strong> - 30.06.<strong>2021</strong>: ", fruehchen_count_07_2020_06_2021,
      "<br/>",
      "neue Mindestmenge: 25",
      '<br/><span style="color:', color, '">', color_text, '</span></p>'
      )
  ) %>%
  rowwise() %>% # transform rowwise to html tag
  mutate(
    label = HTML(label)
  )

differences_map <- create_base_map(differences_markers, "Dif", differences_legend_values, differences_legend_title, differences_pal) %>%
  addLegend(
    "bottomleft",
    colors = c("#008000", "#E9B824", "#DC143C"),
    labels = c("Ja", HTML("Nein (Ausnahmenregelung geplant)"), "Nein"),
    title = HTML("Ab 2024 Abrechnungserlaubnis<br/>für Frühchen unter 1250 g"),
    opacity = 1
  ) %>%
  addCircleMarkers(
    data = dietrich_bonhoeffer,
    radius = 4,
    color = dietrich_bonhoeffer$color,
    stroke = FALSE,
    fillOpacity = 1,
    label = dietrich_bonhoeffer$label,
    labelOptions = labelOptions(
      style = list(
        "font-size" = "12px"
      )
    ),
    options = markerOptions(riseOnHover = TRUE)
  ) %>%
  addCircleMarkers(
    data = old_count_subset,
    radius = 4,
    color = old_count_subset$color,
    stroke = FALSE,
    fillOpacity = 1,
    label = old_count_subset$label,
    labelOptions = labelOptions(
      style = list(
        "font-size" = "12px"
      )
    ),
    options = markerOptions(riseOnHover = TRUE)
  )

filename <- paste0(today(), "_", "Sollzustand_MM25")

data_choropleth <- tibble(
  fileformat = c("csv", "topojson"),
  filename_suffix = c("Kliniken", "Fahrtzeiten")
)
images_choropleth <- tibble(
  fileformat = c("html"),
  filename_suffix = c("")
)
captions = c(caption_fruehchen, caption_fahrtzeiten)

htmlpfad <- file.path(imagepath, paste0(filename, ".html"))
datenpfad_clinics <- file.path(imagepath, paste0(filename, "_Kliniken.csv"))
datenpfad_distance <- file.path(imagepath, paste0(filename, "_Fahrtzeiten.topojson"))

mapshot(differences_map, url=htmlpfad)
differences_clinics <- fruehchen_kliniken %>%
  filter(`2024_permission` != "False")
subset_clinics_25 <- differences_clinics %>%
  write_csv(datenpfad_clinics)
driving_distance <- topojson_write(input=gemeinde_fahrtzeiten, file=datenpfad_distance)

differences_map
image_helper_light(
  filename=filename,
  filepath=imagepath,
  data=data_choropleth,
  images=images_choropleth,
  captions=captions
)

```

```{r}
#| label: dif_distribution

mean_dif <- round(mean(gemeinde_fahrtzeiten$Dif), digits=1)
max_dif <- max(gemeinde_fahrtzeiten$Dif)
total_pop <- sum(gemeinde_fahrtzeiten$EWZ)
deciles <- quantile(gemeinde_fahrtzeiten$Dif, probs=seq(0, 1, 0.1))
q90 <- deciles["90%"]
# q80 <- deciles["80%"]
# q60 <- deciles["60%"]

min_oneandahalf_hour_drive <- as_tibble(gemeinde_fahrtzeiten) %>%
  filter(fahrtzeit_scenario_2 >=90) %>%
  select(EWZ)
min_oneandahalf_hour_drive_pop <- sum(min_oneandahalf_hour_drive)
rel_min_oneandahalf_hour_drive_pop <- round(100*(min_oneandahalf_hour_drive_pop/total_pop), digits=2)

```

Die durchschnittliche Veränderung der (Durchschnitts-)Fahrtzeiten der Gemeinden zur nächsten Frühchen-Klinik beträgt lediglich `r format(mean_dif, decimal.mark=",")` Minuten, die maximale Erhöhung `r format(max_dif, decimal.mark=",")`. Selbst wenn die roten und gelben Kinderkliniken „entfallen", verlängert sich in 90 Prozent der Gemeinden die Fahrtzeit nicht. Eine Gesamt-Fahrtzeit von mehr als 1,5 Stunden betrifft nur `r format(rel_min_oneandahalf_hour_drive_pop, decimal.mark=",")` Prozent der Gesamtbevölkerung. Die lange Gesamt-Fahrtzeit erklärt sich in den meisten Fällen aber nicht mit der Einführung der neuen Mindestmenge: Die Betroffenen haben aktuell schon eine lange Fahrtzeit zur nächsten Frühchen-Klinik.

Ein Großteil der Bürgerinnen und Bürger ist demnach kaum von nennenswerten Fahrtzeiten-Verlängerungen betroffen. In manchen Regionen könnten sich die Fahrtzeiten aber um rund 30 Minuten verlängern, zum Beispiel in Itzehoe, im Norden Bayerns sowie im Nordosten und Süden Baden-Württembergs.

Insbesondere in diesen Regionen dürfte sich für die Berichterstattung auch ein Blick darauf lohnen, inwieweit umliegende Level-1-Kinderkliniken Fälle von jenen Kliniken übernehmen können, die künftig die Mindestmenge nicht mehr erreichen. Eine Klinik, die ihren Level-1-Status nun verliert, darf wie anfangs bereits erwähnt weiterhin die allermeisten Geburten und Nachbehandlungen der Säuglinge durchführen. In der Pädiatrie gibt es daher schon in einigen Gemeinden Deutschlands Kooperationen zwischen den Kliniken, zum Beispiel um die Uniklinik Dresden herum. Im dortigen [Zentrum für feto/neonatale Gesundheit](https://www.uniklinikum-dresden.de/de/das-klinikum/kliniken-polikliniken-institute/kik/bereiche/fachbereiche/feto-neonat-pfad/ueber-uns/der-feto-neonatale-pfad){target="_blank"} kommen stationäre Einrichtungen unterschiedlicher Level und ambulante Ärzte zusammen, um in einer Region mit rund 15 000 Geburten die Versorgung von Schwangeren sowie Früh- und kranken Neugeborenen sicherzustellen.

```{r}
#| label: map_static_images

create_map_static_images <- function(labeled_markers, markers_data, polygon_color_col, distance_legend_values, distance_legend_title, pal) {
  
  gemeinde_fahrtzeiten <- add_polygon_label_col(polygon_color_col, distance_legend_title)
  extra_style <- tags$style(".leaflet-container { background: white !important; }")
  
  map <- leaflet() %>%
    addPolygons(
      data = gemeinde_fahrtzeiten,
      smoothFactor = 0.2, 
      fillOpacity = 1,
      fillColor = ~pal(gemeinde_fahrtzeiten[[polygon_color_col]]),
      weight = 0,
      color = ~pal(gemeinde_fahrtzeiten[[polygon_color_col]])
    ) %>%
    addLegend( # polygon legends (Gemeinden)
      "topright", 
      pal = pal, 
      values = distance_legend_values,
      title = distance_legend_title,
      opacity = 1
    ) %>%
    addLegend(
      "bottomright",
      colors = c("#008000", "#E9B824", "#DC143C"),
      labels = c("Ja", HTML("Nein (Ausnahmenregelung geplant)"), "Nein"),
      title = HTML("Ab 2024 Abrechnungserlaubnis<br/>für Frühchen unter 1250 g"),
      opacity = 1
    ) %>%
    addPolylines(
      data=bundeslaender,
      color="black",
      weight = 1
    ) %>%
    addCircleMarkers(
      data = markers_data,
      radius = 4,
      color = markers_data$color,
      stroke = FALSE,
      fillOpacity = 1
    ) %>%
    addCircleMarkers(
      data = labeled_markers,
      radius = 5,
      color = labeled_markers$color,
      stroke = FALSE,
      fillOpacity = 1,
      label = labeled_markers$name_aok,
      labelOptions = labelOptions(
        noHide = T, 
        style = list("font-size" = "14px")
      ),
      options = markerOptions(riseOnHover = TRUE)
    ) %>%
    prependContent(extra_style)

  map
}

```

#### Beispiele für mögliche Problemregionen

Bis auf den Norden Bayerns und den Nordosten sowie Süden Baden-Württembergs ist ab 2024 nicht mit hohen Fahrtzeitverlängerungen zu rechnen. Um die Fahrtzeiten in Nordbayern nicht unnötig zu verlängern, wäre es in dieser Region womöglich sinnvoll, aus den drei wegfallenden Level-1-Kliniken in Schweinfurt, Coburg und Bayreuth ein Klinikum auszuwählen, das künftig die Fälle der anderen Häuser mit übernimmt. Dieses Zentrum würde die neue Mindestmenge auch problemlos erreichen.

Die Planung darüber, welche Kinderklinik künftig für eine bestimmte Region die „Federführung" bei der Behandlung von Extrem-Frühchen übernehmen soll, wenn mehrere umliegende Häuser aus der Versorgung fallen, ist eigentlich Aufgabe der Landesbehörden. Nach dem Verständnis einiger Kliniken und Ärzte kommen die Bundesländer ihren Verpflichtungen hierbei aber nicht nach. So scheiterten bisher zum Beispiel mehrere [Kooperationsversuche](https://www.np-coburg.de/inhalt.sorge-um-fruehchenversorgung-keine-kooperation-in-coburg-und-suhl.817ea1c1-c8e5-404d-9606-3ac1695b8696.html){target="_blank"} der Perinatalzentren in Coburg und Suhl.

```{r}
#| label: BaThue

labeled_clinics <- c("Klinikum Coburg", "Leopoldina Krankenhaus der Stadt Schweinfurt", "Klinikum Bayreuth", "SRH Zentralklinikum Suhl")

labeled_markers <- fruehchen_kliniken %>%
  filter(name_aok %in% labeled_clinics) %>%
  mutate(
    # color = "grey",
    color = if_else(
      `2024_permission` == "True",
      "#008000",
      if_else(`2024_permission` == "yes_no_mm", "#E9B824", "#DC143C")
    )
  )

map <- create_map_static_images(labeled_markers, differences_markers, "Dif", differences_legend_values, differences_legend_title, differences_pal) %>%
  setView(11, 50.2, 9)

filename <- paste0(today(), "_", "BaThue")

images_choropleth <- tibble(
  fileformat = c("png"),
  filename_suffix = c("")
)
captions = c(caption_fruehchen, caption_fahrtzeiten)

pngpfad <- file.path(imagepath, paste0(filename, ".png"))

mapshot(map, file=pngpfad, vwidth=650)

image_helper_light(
  filename=filename,
  filepath=imagepath,
  images=images_choropleth,
  captions=captions,
  static_image = TRUE # ,
  # static_image_parameters = "width=100%"
)

```

In Baden-Württemberg würden sich die Fahrtzeiten um die Klinikstandorte Schwäbisch Hall, Steinenberg und Ravensburg ebenfalls um gut 30 Minuten verlängern, wenn die Häuser wie geplant aus der Versorgung fallen. Die baden-württembergische Landesregierung hat allerdings für alle Häuser bereits eine [Ausnahmeregelung](https://www.swr.de/swraktuell/baden-wuerttemberg/ausnahme-genehmigungen-fuer-fruehgeborenen-stationen-in-kliniken-100.html){target="_blank"} angekündigt, die aber im Einvernehmen mit den Landeskassen erfolgen muss.

```{r}
#| label: BaWue

labeled_clinics <- c("Diakonie-Klinikum Schwäbisch Hall", "Klinikum am Steinenberg", "St. Elisabethen-Klinikum Ravensburg")

labeled_markers <- fruehchen_kliniken %>%
  filter(name_aok %in% labeled_clinics) %>%
  mutate(
    # color = "grey",
    color = if_else(
      `2024_permission` == "True",
      "#008000",
      if_else(`2024_permission` == "yes_no_mm", "#E9B824", "#DC143C")
    )
  )

map <- create_map_static_images(labeled_markers, differences_markers, "Dif", differences_legend_values, differences_legend_title, differences_pal) %>%
  setView(9.3, 48.5, 8)

filename <- paste0(today(), "_", "BaWue")

images_choropleth <- tibble(
  fileformat = c("png"),
  filename_suffix = c("")
)
captions = c(caption_fruehchen, caption_fahrtzeiten)

pngpfad <- file.path(imagepath, paste0(filename, ".png"))

mapshot(map, file=pngpfad, vwidth=650)

image_helper_light(
  filename=filename,
  filepath=imagepath,
  images=images_choropleth,
  captions=captions,
  static_image = TRUE # ,
  # static_image_parameters = "width=100%"
)

```

Ein interessanter und gleichzeitig exemplarischer Fall für eine kleine Kinderklinik, die um ihren Level-1-Status kämpft, ist das Dietrich-Bonhoeffer-Klinikum in Neubrandenburg (Mecklenburg-Vorpommern). Bereits seit Beginn dieses Jahres darf die dortige Kinderklinik keine Behandlung von Frühchen unter 1250 Gramm mehr abrechnen. Die Klinik ist deshalb nicht auf der ersten interaktiven Karte (Status quo) zu finden. Auf der zweiten Karte ist sie zwar vorhanden, jedoch ohne Auswirkungen auf die Fahrtzeit, da die Klinik bereits vor den jüngsten Kassenbescheiden aus der Versorgung gefallen ist. Bisher gibt es also keine Änderung zum Status quo.

Die Fallzahlen des Dietrich-Bonhoeffer-Klinikums lagen vor der Corona-Pandemie zwischen 16 und 20, zuletzt aber bei 8, sodass die Landeskrankenkassen damals schon kein grünes Licht gaben. Die Klinik dringt seitdem darauf, die Versorgung der Extrem-Frühchen wieder aufnehmen zu dürfen. Eine Petition der Mitarbeitervertretung mit dem Titel [„Keine Schließungen von Geburtshilfestationen aufgrund der Hochsetzung der Mindestfallzahl"](https://epetitionen.bundestag.de/petitionen/_2022/_10/_07/Petition_139965.$$$.a.u.html){target="_blank"} erreichte die notwendige Hürde für den Petitionsausschuss des Bundestags. Der Titel ist stark zuspitzend und inhaltlich falsch. Geburtskliniken werden durch die neue Mindestmenge nicht geschlossen. Es geht nur um die Abrechnung eines kleinen Teil der Geburten. Die geforderte Ausnahmeregelung wurde vorerst aber [abgelehnt](https://www.kma-online.de/aktuelles/klinik-news/detail/keine-ausnahmeregelung-fuer-neubrandenburgs-fruehchen-49558){target="_blank"}, trotzdem kämpft die Klinik weiter.

Im Zuge der lokalen Berichterstattung zu diesem Fall wurde auch das Argument längerer Fahrtzeiten angebracht. Ohne den Level-1-Status des Dietrich-Bonhoeffer-Klinikums beträgt die durchschnittliche Fahrtzeit zur nächsten Level-1-Kinderklinik in Neubrandenburg 55 Minuten. Dürfte das Dietrich-Bonhoeffer-Klinikum erneut Frühchen unter 1250 Gramm behandeln, würden sich die Fahrtzeiten in dieser Region natürlich merklich reduzieren. Inwieweit dies jedoch auch einen Qualitätsgewinn bei der Extrem-Frühchen-Versorgung insgesamt zur Folge hätte, ist fraglich. Die nächsten geeigneten Kinderkliniken sind in Mecklenburg-Vorpommern die Uniklinik Greifswald, die Helios Kliniken Schwerin und das Klinikum Südstadt in Rostock.

```{r}
#| label: MeckPomm

labeled_clinics <- c("Dietrich-Bonhoeffer-Klinikum", "Universitätsmedizin Greifswald", "Helios Kliniken Schwerin", "Klinikum Südstadt Rostock")

labeled_markers <- fruehchen_kliniken %>%
  filter(name_aok %in% labeled_clinics) %>%
  mutate(
    # color = "grey",
    color = if_else(
      `2024_permission` == "True",
      "#008000",
      if_else(`2024_permission` == "yes_no_mm", "#E9B824", "#DC143C")
    )
  )

map <- create_map_static_images(labeled_markers, differences_markers, "fahrtzeit_scenario_1", as_is_legend_values, as_is_legend_title, as_is_pal) %>%
  setView(12.4, 53.9, 9)

filename <- paste0(today(), "_", "MeckPomm")

images_choropleth <- tibble(
  fileformat = c("png"),
  filename_suffix = c("")
)
captions = c(caption_fruehchen, caption_fahrtzeiten)

pngpfad <- file.path(imagepath, paste0(filename, ".png"))

mapshot(map, file=pngpfad, vwidth=800)

image_helper_light(
  filename=filename,
  filepath=imagepath,
  images=images_choropleth,
  captions=captions,
  static_image = TRUE,
  static_image_parameters = "width=100%"
)

```

#### Abrechnungserlaubnis trotz geringer Fallzahlen

Kliniken können von den Landeskassen vor Ort auch eine positive Prognose erhalten, obwohl sie die Mindestmenge in der Vergangenheit zum Beispiel aus organisatorischen oder personellen Gründen unterschritten haben. Können die Kliniken gegenüber den Kassen glaubhaft versichern, dass die Probleme künftig nicht mehr bestehen und die Mindestmenge erreicht wird, gibt es eine positive Prognose. Inwieweit derlei Kliniken in Zukunft tatsächlich die neue Mindestmenge erreichen, ist zu prüfen.

<strong>Kliniken mit Abrechnungserlaubnis trotz einer Fallzahl \< 25</strong>

```{r}
#| label: clinics_below_mm

clinics_below_mm <- fruehchen_kliniken %>%
  filter(`2024_permission` == "True", fruehchen_count_07_2022_06_2023 < 25) %>%
  mutate(Klinik = name_aok, `Fallzahl 2022` = fruehchen_count_2022, `Fallzahl 01.07.2022 bis 30.06.2023` = fruehchen_count_07_2022_06_2023) %>%
  select(Klinik, `Fallzahl 2022`, `Fallzahl 01.07.2022 bis 30.06.2023`) %>%
  datatable(options = list(order = list(2, 'asc'), pageLength = 15), rownames = FALSE) %>%
  formatStyle(
    "Fallzahl 01.07.2022 bis 30.06.2023",
    backgroundColor = "#D3D3D3"
  )

clinics_below_mm

```

### Methodik und Limitationen

#### Auswertung der Fahrtzeitdaten

Es liegen Daten der Universität Wuppertal vor, die die Fahrtzeit von allen 100-Meter-Gitterzellen zu allen Kliniken in Deutschland angeben. Eine detailiertere Beschreibung der Daten ist im Abschnitt [Datengrundlage und Code](#datengrundlage_und_code) zu finden.

Für die Berechnung der Fahrtzeiten in diesem Data Report werden nur Kliniken berücksichtigt, die bisher Frühchen unter 1250 Gramm versorgt haben und ab 2024 versorgen werden. Für jede einzelne Gitterzelle wird geprüft, welche von diesen Kliniken am schnellsten erreichbar ist. Nur diese Fahrtzeit wird berücksichtigt.

Alle Gitterzellen innerhalb einer Gemeinde werden zusammengefasst und gemittelt. Dies geschieht gewichtet nach der Bevölkerung pro Gitterzelle (Zensus 2011). Daraus ergibt sich für jede Gemeinde eine „mittlere Fahrtzeit zur nächsten geeigneten Klinik". Um die Fahrzeitveränderung zu bestimmen, wird dieser Vorgang zweimal durchgeführt. Einmal für alle Kliniken, die bisher sehr früh geborene Kinder versorgt haben und einmal für alle Kliniken, die in Zukunft diese Extremfrühchen versorgen dürfen. Anschließend wird für jede Gemeinde die Differenz dieser zwei durchschnittlichen Fahrtzeiten berechnet.

#### Anmerkungen zu den Bevölkerungsdaten

Die Gewichtung für die Zusammenfassung der Gitterzellen bezieht sich auf Zensusdaten von 2011. Die auf der Karte dargestellten Bevölkerungszahlen entsprechen dem Stand von 2019 und sind Werte zur Gesamtbevölkerung und nicht etwa nur Frauen in gebärfähigem Alter.

#### Limitationen und Anmerkungen zu den Fahrtzeitdaten

Bei großen Kliniken kann die Adresse teilweise ungenau sein, da die Kinderklinik zum Beispiel an einer anderen Straße liegt als die Verwaltung. Da die Adressen in derlei Fällen aber höchstens wenige Hundert Meter voneinander entfernt liegen, spielt dies für die Fahrtzeitenberechnung kaum eine Rolle.

Das zugrundeliegende OpenStreetMap-Straßennetz ist auf dem Stand von 2017. Straßen, die danach gebaut wurden, sind nicht berücksichtigt.

Die auf der Karte dargestellten Gemeindegrenzen und die Bevölkerungszahlen entsprechen dem Stand von 2019. Gebiete für die auf der Karte keine Fahrtzeit angegeben ist, sind gemeindefreie und unbewohnte Gebiete.

In einigen Sonderfällen wie bei Inseln kann die Routenberechnung fehlerhaft sein, da hier Vereinfachungen bezüglich der Fährverbindungen getroffen wurden. Auch können fehlerhaft eingetragene Einbahnstraßen zu hohen Fahrtzeiten in einzelnen Zellen führen.

Grenzregionen: Es werden nur Kliniken in Deutschland berücksichtigt. In Grenzregionen wird nicht berücksichtigt, dass manche Personen auch über die Grenze fahren. Bei der Betrachtung von Geburten ist dies aber nicht relevant.

Mit Blick auf die Fahrtzeitveränderung sind viele dieser Limitationen weniger relevant. Die Ungenauigkeiten in den absoluten Werten verschwinden zum größten Teil, da sie sowohl im Vorher- als auch im Nachher-Szenario eingerechnet wurden und bei der Differenzbildung wegfallen.

### Datengrundlage und Code

Den Code für diesen Data Report stellen wir [hier](
`r file.path(imagepath, paste0(today(), "_", file_name_code))` ){target="_blank"} zur Verfügung. [Hier](
`r file.path(imagepath, "fahrtzeiten_simplified.topojson")` ){target="_blank"} finden Sie die von uns vorverarbeiteten Fahrtzeitdaten und [hier](
`r file.path(imagepath, "fruehchen_list_final.csv")` ){target="_blank"} die Klinikdaten. Neben Standard-R-Paketen wird ein eigenes Paket verwendet, das [hier](https://github.com/sciencemediacenter/SMChelpR){target="_blank"} bereitgestellt wird.

Die Daten zu den Fahrtzeiten stammen von Tim Holthaus vom Lehrstuhl für Güterverkehr und Transportlogistik an der Universität Wuppertal. Die Fahrtzeit bezieht sich auf eine Fahrt mit dem Pkw an einem Werktag zwischen 7 und 11 Uhr. Grundlage für die Routenberechnung ist ein OpenStreetMap-Straßennetz, in dem für alle 100-Meter-Segmente die mittlere Geschwindigkeit aus Navigations-Daten aus dem Jahr 2017 verwendet wurden. Als Startpunkt der Routenberechnung wurde immer der Straßenknoten gewählt, der dem Mittelpunkt der Gitterzelle am nächsten liegt. Eine detaillierte Beschreibung der Methodik findet sich [hier](https://www.researchgate.net/publication/342211628_Evaluation_of_driven_speed_on_German_motorways_without_speed_limits_-_a_new_approach){target="_blank"}. Die zugrundeliegende Liste der Kliniken wurde von „Zeit Online" recherchiert (Stand 2021).

Die Fallzahlen der jährlich behandelten Frühchen stammen aus der [Mindestmengen-Transparenzliste 2024 des AOK-Bundesverbandes](https://www.aok.de/pp/fileadmin/bereiche/unternehmenskommunikation/Gesundheitspolitik/Hintergruende/Stationaere_Versorgung/Mindestmengen/mindestmengen-transparenzliste_2024.pdf){target="_blank"} und der [Mindestmengen-Transparenzliste 2023 des AOK-Bundesverbandes](https://www.aok.de/pp/fileadmin/bereiche/unternehmenskommunikation/Gesundheitspolitik/Hintergruende/Stationaere_Versorgung/Mindestmengen/mindestmengen-transparenzliste_2023.pdf){target="_blank"}.

*In einer vorherigen Version des Reports stand, das Klinikum Schwäbisch Hall habe von den Landeskassen einen positiven Bescheid erhalten. Das ist nicht korrekt. Die Klinik hat keine Abrechnungserlaubnis. Hier lag eine Verwechslung mit dem Stauferklinikum Schwäbisch Gmünd vor. Wir bitten, den Fehler zu entschuldigen.*

### Ihre Ansprechpersonen in Redaktion und SMC Lab

Wenn Sie Fragen zu diesen Daten haben oder weitere Auswertungen erhalten wollen, kann das SMC Lab Auswertungen erzeugen.

*Redaktion*\
Philipp Jacobs, Redakteur für Medizin und Lebenswissenschaften\
[redaktion\@sciencemediacenter.de](mailto:redaktion@sciencemediacenter.de){.email}

*Datenauswertung*\
Laura Bahamón Jiménez\
Yannik Venohr\
Lars Koppers\
[lab\@sciencemediacenter.de](mailto:lab@sciencemediacenter.de){.email}

Telefon: +49 221 8888 25-0\
:::
